简单选择排序算法 Simple Selection Sort
1.简单选择排序法的思想:
通过n-i 次关键字间的比较,从n-i+1 个记录中选出关键字最小的记录,并和第i (1<= i <=n)个记录交换之。
1 void SelectSort( SqList * L) 2 { 3 int i, j, min; 4 for(i=1; i<L->length; i++) 5 { 6 min = i; 7 for(j=i+1; j<=L->length; j++) 8 { 9 if(L->r[min] > L->r[j]) 10 { 11 min = j; 12 } 13 } 14 if(i != min) 15 { 16 swap(L, i, min); 17 } 18 } 19 }
2.简单选择排序复杂度分析
无论是最好最差的情况,比较次数都是一样多,第 i 趟排序需要进行 n-i 次关键字的比较,此时需要比较∑1n-1 (n-i) = n-1 + n-2 +... +1 = n(n-1)/2 次。
当最好的时候,交换为0,最差的时候,交换的次数为n-1次。
基于最终的排序时间是比较和交换的次数总和,因此,总的时间复杂度依然是O(n2).
虽然与冒泡算法同为O(n2),但简单排序算法在性能上还是要略优于冒泡算法。它最大的特点是交换数据次数相当少,这样就节约了相应的时间。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。