选择排序的基本思想:将一个元素个数为n的数组,通过第一次找出最小/者最大的数,将这个数与最后一个/第一个位置的元素交换,然后下次从n-1个位数中继续执行上面同样的操作,经过n-1次完成排序的过程,一下是代码演示:
#includeusing namespace std; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } void selectSort(int girl[],int len) { //int len = sizeof(girl) / sizeof(int);//不能这样搞,len=1(一直) for (int i = 0; i < len - 1; i++) { int max = 0; //用于指向每一次循环找到得最大值得下标 for (int j = 1; j < len - i; j++) { if (girl[j] > girl[max]) { max = j; } } //跳出循环后找到了本轮的最大值 //如果该最大值不是最后一个就将该最大值与最后一个交换 if (max != len - 1 - i) { swap(&girl[max], &girl[len - 1 - i]); } } } int main() { int girl[] = { 168,158,173,168,179,166,158,163,180 }; int len = sizeof(girl) / sizeof(int); selectSort(girl,len); for (int i = 0; i < len; i++) { cout << girl[i] << " "; } system("pause"); return 0; }
从代码中可以看出,选择排序的过程有两个for循环,外层的for循环确定了要进行排序的元素的个数,内层的for循环表示剩下元素跟后面元素(除去已经拍好序)比较的次数。



