简单选择排序详见大话数据结构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 }
浙公网安备 33010602011771号