问答题 下面给出一个排序算法,数组a[]是存放待排序数据元素的数组,n是数组大小,数据元素的数据类型是DataType。
void unknow(DataType a[],int n){
int high=n-1,i,j;DataType w;
while(high>0){
j=0;
for(i=0;i<high;i++)
if(a[i]>a[i+1]){
w=a[i];a[i]=a[i+1];a[i+1]=w;
j=i;
}
high=j;
}
}
问答题 该算法的功能是什么?
【正确答案】
【答案解析】此算法是使用最后交换地址high控制的冒泡排序。
问答题 若待排序数据序列为{10,20,30,40,50,60},画出每次执行的结果序列。
【正确答案】
【答案解析】针对正序的待排序数据序列的(每趟while)执行结果,如下表所示,一趟结束。
序号 0 1 2 3 4 5 执行前high 执行后high 交换次数
初始 10 20 30 40 50 60
1 10 20 30 40 50 60 5 0 0
问答题 若待排序数据序列为{60,50,40,30,20,10},画出每次执行的结果序列。
【正确答案】
【答案解析】针对逆序的待排序数据序列的(每趟while)执行结果,如下表所示,五趟结束。
序号 0 1 2 3 4 5 执行前high 执行后high 交换次数
初始 60 50 40 30 20 10
1 50 40 30 20 10 60 5 4 5
2 40 30 20 10 50 60 4 3 4
3 30 20 10 40 50 60 3 2 3
4 20 10 30 40 50 60 2 1 2
5 10 20 30 40 50 60 1 0 1