1、阅渎以下说明和C代码,回答问题,将解答写入答题纸的对应栏内。 【说明】函数bubbleSort(int arr [ ] int n, int (*compare)(int, int)的功能是根据调用时传递的比较函数 compare 对数組arr的前n个元素进行排序。 【C代码】#define swap(a,b){a=a^b;b=a^b;a=a^b //交换a与b 的值
int less(int x, int y)
{
return((x<y)?1: 0);
}
int larger(int x, int y)
{
return((x>y)?1: 0);
}
void bubble Sort(int arr[ ], int n, int (*compare)(int, int))
{
int i,j;
int swapped= 1;
for( i= 0; swapped; 1++) {
swapped =0;
for(j=0; j<n-I-i; j++)
if( compare( arr[j+1, arr[ j ])) {
swap( arr[j+1}, arr[ j ]);
swapped =1;
}
}
}【问题1】设有如下数组定义:int data1[ ]={4,2.6.3,1};int data2[ ]={4,2,6.3,1}int datas3[ ]={4,2,6.3,1}请分别给出下面的函数调用执行后,数组 data1、data2和 data3 各自的元素序列。(1)bubble Sort(data1, 5, less);(2)bubble Sort(data2, 5, larger)(3)bubble Sort(data3, 3, larger)
答案:
(1){1,2,3,4,6}
(2){6,4,3,2,1}
(3){6,4,2,3,1}
答题解析:
swp 函数是将两元素值进行相互交换。
less 数是判断x和y 的关系,如果 x<y,则函数值为真;
large 的数是判断x和y 的关系,如果x>y,则函数值为真;
在)bubbleSort函数中,第二个参数表示进行比素的个数,第三个参数表示进排序的方式,如果传入less函数,则是从小到大排序;如果传入large函数,则是从大到小排序。
查看完整试题>>>