选择排序
选择排序(selection sort)的基本思想是,每一趟在n-i+1(i = 1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。
在选择排序中最简单的是简单选择排序。
简单选择排序
算法思想:
1.一趟简单选择排序的操作为:通过n-i 次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,和第i(1<= i <=n)个记录交换之;
1 PROC smp_selecpass(VAR r:listtype;i:interger)2 {本算法在r[1..n]的记录中选择关键字最小的记录,并和r[i]相交换}3 k:=i;4 FOR j:=i+1 TO n DO5 IF r[j].key < r[k].key THEN k:=j;{k指关键字最小的元素}6 IF k!= i THEN r[i]<->r[k] ;7 END ; {smp_selecpass}
2.令i从1至n-1,调用n-1次算法smp_selecpass即可。
时间复杂度:
无论记录的初始排列如何,所需进行的关键字的比较次数相同,同为n(n-1)/2。因此,总的时间复杂度也是O(n2).