感谢,明天就要交了😭我这哪里出错,怎么写才能让他输出每一次排序的结果
不是8个元素么,改成小于8,而不是小于7,小于7最大到6,那你最后一个数不是就没了,默认为0,所以多了0,没有7
可以在冒泡循环中加入一个内层循环,用于输出每一次排序的结果。具体代码如下:
C++代码:
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
bool flag = true;
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
swap(arr[j], arr[j+1]);
flag = false;
}
}
// 输出每一次排序的结果
cout << "第" << i+1 << "趟排序后的结果:";
for (int k = 0; k < n; k++) {
cout << arr[k] << " ";
}
cout << endl;
if (flag) break;
}
}
int main() {
int arr[] = {5, 3, 8, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
return 0;
}
C语言代码:
#include <stdio.h>
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
int flag = 1;
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = 0;
}
}
// 输出每一次排序的结果
printf("第%d趟排序后的结果:", i+1);
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]);
}
printf("\n");
if (flag) break;
}
}
int main() {
int arr[] = {5, 3, 8, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
return 0;
}