问答题
下面给出一个排序算法,数组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
|