试题五(15分,C 语言程序设计)
阅读下列说明和 C 代码,回答问题 1 至问题 3。
【说明】下面代码实现冒泡排序,对整型数组从小到大排序。
void BubbleSort(int arr[],int n){
int i,j,flag;
for(i=0;i < n-1;i++){
flag=0;
for(j=0;j < n-1-i;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag=1;
}
}
if(flag==0) break;
}
}
【问题1】(4分)代码中变量 flag 的作用是什么?
参考答案flag 标记本轮循环是否发生元素交换。如果一轮遍历无交换,代表数组已经有序,直接退出外层循环,优化冒泡排序性能。
解析:属于冒泡排序的提前终止优化,避免有序数组继续无效循环。