首页 > 试题广场 >

请写出直接选择排序的算法,并分析算法的时间复杂度和空间复杂度

[问答题]

请写出直接选择排序的算法,并分析算法的时间复杂度和空间复杂度。是否稳定的排序?如果是不稳定的,试举出一例。


void   SelectSort(RecType R[] int n)

{ ∥ 对记录序列 R[1..n] 作直接选择排序。

for(i=1; i<n; i++)

{ ∥ 选择第 i 小的记录,并交换到位

k=i;    ∥ 假定第 i 个元素的关键字最小

for(j=i+1;j<=n;j++) ∥ 找最小元素的下标

if(R[j].key<R[k].key)  k=j;

if(i!=k)  R[i]←→R[k]; ∥ 与第 i 个记录交换

}∥for

}∥SelectSort //

时间复杂度为: O n2 //

空间复杂度为: O(1) //

不稳定的排序:如 2 2 1 排序后为: 2 2 1 //

发表于 2017-05-17 16:53:37 回复(0)