- 选择排序(C语言版):时间复杂度=O(n²) 空间复杂度=O(1)
算法步骤:
-
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
-
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
-
重复第二步,直到所有元素均排序完毕。
算法演示:
代码:
1 void SelectSort(int *A,int length){ 2 int temp = 0; //存放最小值得下标 3 for (int k = 0; k < length-1; ++k) { 4 //查找除A[k]之后的最小值 5 int min = *(A + k); 6 for (int j = k; j < length; ++j) { 7 if(min > A[j]){ 8 min = A[j]; 9 temp = j; 10 } 11 } 12 //判断大小后,将最小值与A[k]交换 13 if (*(A+k) > *(A+temp)) 14 swap(A+k ,A+temp); 15 } 16 // Print(A,length); 17 }