冒泡循环,要求输出每一趟的结果

感谢,明天就要交了😭我这哪里出错,怎么写才能让他输出每一次排序的结果

img

不是8个元素么,改成小于8,而不是小于7,小于7最大到6,那你最后一个数不是就没了,默认为0,所以多了0,没有7

img

以下内容部分参考ChatGPT模型:


可以在冒泡循环中加入一个内层循环,用于输出每一次排序的结果。具体代码如下:

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;
}

如果我的建议对您有帮助、请点击采纳、祝您生活愉快