补全下列冒泡排序代码 void bubbleSort(ElemType list[], int len) { int temp; int flag=1; for (int index = 0; index < len && flag==1 ; ++index) { flag=0; for (int idx = 1; (1) ; idx++) { if (list[idx] < list[idx - 1]) { temp = list[idx]; list[idx] = list[idx - 1]; (2) ; } } } }
时间: 2024-02-14 19:21:01 浏览: 51
void bubbleSort(ElemType list[], int len) {
int temp;
int flag=1;
for (int index = 0; index < len && flag==1 ; ++index) {
flag=0;
for (int idx = 1; idx < len - index; idx++) { //(1)补充代码
if (list[idx] < list[idx - 1]) {
temp = list[idx];
list[idx] = list[idx - 1];
list[idx - 1] = temp; //(2)补充代码
flag = 1;
}
}
}
}
相关问题
void bubbleSort(ElemType list[], int len) { int temp; int flag=1; for (int index = 0; index < len && flag==1 ; ++index) { flag=0; for (int idx = 1; (1) ; idx++) { if (list[idx] < list[idx - 1]) { temp = list[idx]; list[idx] = list[idx - 1]; (2) ; } } } }补全代码
这段代码中缺少循环条件,应该是:
```
void bubbleSort(ElemType list[], int len) {
int temp;
int flag=1;
for (int index = 0; index < len && flag==1 ; ++index) {
flag=0;
for (int idx = 1; idx < len - index; idx++) {
if (list[idx] < list[idx - 1]) {
temp = list[idx];
list[idx] = list[idx - 1];
list[idx - 1] = temp;
flag=1;
}
}
}
}
```
这是一个冒泡排序的实现,用于对数组 `list` 进行排序,排序的长度为 `len`。
//15年 冒泡排序 #include<stdio.h> //数组上限的长度 #define ARR_LEN 255 //元素类型 #define elemType int //从第一个数字开始,两两进行比较,小的数字以前面大的数字交换位置 void bubbleSort(elemType arr[],int len){ elemType temp; int i,j; // 第一个for循环为排序趟数 i for(i=0;j<len-1;i++){ // 第二个for循环为比较次数 j for(j=0;j<len-1;j++){ // 相邻数字比较,小数交换 定义一个中间变量 if(arr[j]>arr[j+1]) temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } int main(void){ elemType arr[ARR_LEN]={-99, 37, 65, -81}; int len=4; int i; bubbleSort (arr,len); for(i=0;i=len;i++) printf("%d\t ",arr[i]); putchar('\n'); return 0; } 代码的问题
这段代码存在几个问题:
1. 在第一个for循环中,循环的条件应为`i<len-1`,而不是`j<len-1`。
2. 在第一个for循环的最后一行,应该是`i++`而不是`i++`。
3. 在第二个for循环中,应该是`j<len-1-i`,而不是`j<len-1`。因为每一趟排序都会将最大的数沉到最后,所以下一趟排序时就可以少比较一次。
4. 在交换元素的代码块中,需要使用大括号将多行代码包裹起来。即使只有一行代码,也建议使用大括号,以增加代码的可读性和可维护性。
5. 在最后的for循环中,条件应为`i<len`,而不是`i=len`。
修正后的代码如下:
```c
#include<stdio.h>
#define ARR_LEN 255
typedef int elemType;
void bubbleSort(elemType arr[], int len) {
elemType temp;
int i, j;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main(void) {
elemType arr[ARR_LEN] = { -99, 37, 65, -81 };
int len = 4;
int i;
bubbleSort(arr, len);
for (i = 0; i < len; i++) {
printf("%d\t", arr[i]);
}
putchar('\n');
return 0;
}
```
修复后的代码可以正确进行冒泡排序,并输出排序后的结果。
阅读全文