当所有待排序记录的排序码都相等,计算下列排序方法的运行时间:(1) 直接插入排序;(2)堆排序;(3)起泡排序;(4)简单选择排序。
第1题
第2题
A.按排序码值从小到大排列
B.按排序码值从大到小排列
C.随机排列(完全无序)
D.基本按排序码值升序排列
第4题
第6题
阅读下列对正整数关键字序列L操作的算法,并回答问题:
(1)设L=(28,19,27,49,56,12,10,25,20,50),写出f33(L,4)的返回值;
(2)简述函数f33的功能。
int Partition(SeqList*L,int low,int high);
//对L[low…high]做划分,返回基准记录的位置,并使左部的关键字
//都小于或等于基准记录的关键字,右部的关键字都大于基准记录的关键字
int f33(SeqList L,int k){
int low,high,pivotpos;
low=1;
high=L.length;
if(k<low||k>high)
return-1;
do {
pivotpos=Partition(&L,low,high);//调用快速排序的划分算法
if(pivotpos<k)
low=pivotpos+1;
else if(pivotpos>k)
high=pivotpos-1;
}while(pivotpos!=k);
return L.data[pivotpos];
}
第9题
的结果,并说明做了多少次排序码比较,注意,后一个16附带一个“*”表明这是一个与前面某一个元素具有相同排序码值(16)的元素。
(1)直接插入排序
(2)希尔排序(增量为5,2,1)
(3)起泡排序
(4)快速排序
(5)简单选择排序
(6)锦标赛排序
(7)堆排序
(8)二路归并排序
(9)基数排序
第10题
A.①②③④⑤
B.②①③④⑤
C.①②④③⑤
D.②①④③⑤