选择排序的思想也比较容易理解,用一个变量控制数组的有序区和无序区,从无序区中挑选一个最小的数放到有序区的末尾,直到把无序区数据挑完为止,相关代码如下:
#include<stdio.h> void Swap(int &a , int &b) { a = a ^ b ; b = a ^ b ; a = a ^ b ; } int main() { int a[] = {9,6,3,8,5,2,7,4,1} ; for(int i = 0 ; i < 8 ; i++) { int k = i ; for(int j = i + 1 ; j < 9 ; j++) if(a[k] > a[j]) //这点一定是a[k] > a[j] , 不能写成 a[i] > a[j] k = j ; if(k != i) Swap(a[k] , a[i]) ; } for(int i = 0 ; i < 9 ; i++) printf("%d ",a[i]) ; printf(" ") ; return 0 ; }