参考:https://mp.weixin.qq.com/s?__biz=MzUyNjQxNjYyMg==&mid=2247483943&idx=1&sn=5a9a40a9194fdd2eb82820fe4c4e1df3&scene=19#wechat_redirect

 

  •  选择排序(C语言版):时间复杂度=O(n²) 空间复杂度=O(1)

  算法步骤:

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

  2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

  3. 重复第二步,直到所有元素均排序完毕。

  算法演示:

  

  代码:

 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 }
View Code

 

posted on 2019-03-21 20:51  kingofloong  阅读(440)  评论(0编辑  收藏  举报