会飞的蝌蚪君

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

简单选择排序详见大话数据结构p384

问题:何谓选择?即是通过n-i次关键字之间的比较,然后在n-i+1个记录中选择出关键字最小的记录,并和第i个记录交换之。

思路:选定初始某一个位置i,创建flag下标min(初始:min=i),比较其和相邻位置的关键值大小,若是后面的数小,则将当前下标min后移,直到找到这一轮循环的最小值,然后就将swap(i,min),即找到了第一轮循环的最小数,并放置在了i位置上;接着i+1,再次进入循环,依次循环完成排序。

 

 1 //简单选择排序
 2 
 3 void SelectSort(sqlist*L)
 4 {
 5     int i,j,min;
 6     for(i=1;i<L->length;i++)
 7     {
 8         min = i;
 9         for(j=i+1;j<L->length;j++)
10         {
11             if(L->r[min]>L->r[j])
12                 min = j;
13 
14         }
15         if(i != min)
16             swap(L,i,min);
17     }
18 }

 

posted on 2018-04-18 16:16  会飞的蝌蚪  阅读(174)  评论(0)    收藏  举报