C中的冒泡排序

kd3sttzy  于 2022-12-17  发布在  其他
关注(0)|答案(3)|浏览(127)

我试着实现冒泡排序算法来排序一个10元素的数组。我试着写下面的代码,它看起来没有错,但是它根本没有排序元素。
有人能给予我一下吗?
这是密码:
'

#include <stdio.h>

#define DIM 10

int main() {

    int arr[DIM] = {1, 5, 6, 8, 7, 9, 3, 2, 4, 10};
    int tmp;

    puts("Original array: ");
    for (int i = 0; i < DIM; i++) {
        printf("%3d", arr[i]);
    }
    
    // Bubble sort
    for (int i = 0; i < DIM - 1; ++i) {
        for (int j = 0; j < DIM - i - 1; ++j) {
            // Compare two elements and swap if first > second
            // Use of tmp variable (temporary)
            if (arr[i] > arr[i + 1]) {
                tmp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = tmp;
            }
        }
    }

    puts("");

    puts("Ascending order arrray: ");
    for (int i = 0; i < DIM; i++) {
        printf("%3d", arr[i]);
    }
    
    puts("");

}

'

nfg76nw0

nfg76nw01#

在第二个循环中,应使用j而不是i

if (arr[j] > arr[j + 1]) {
  tmp = arr[j];
  arr[j] = arr[j + 1];
  arr[j + 1] = tmp;
}
zbq4xfa0

zbq4xfa02#

在第二个循环体中使用j代替i。'

// Bubble sort
for (int i = 0; i < DIM - 1; ++i) {
    for (int j = 0; j < DIM - i - 1; ++j) {
        // Compare two elements and swap if first > second
        // Use of tmp variable (temporary)
        if (arr[j] > arr[j + 1]) {
            tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
        }
    }
}
yx2lnoni

yx2lnoni3#

#include <stdio.h>

#define DIM 10

int main() {

    int arr[DIM] = {1, 5, 6, 8, 7, 9, 3, 2, 4, 10};
    int tmp;

    puts("Original array: ");
    for (int i = 0; i < DIM; i++) {
        printf("%3d", arr[i]);
    }
    
    // Bubble sort
    for (int i = 0; i < DIM - 1; ++i) {
        for (int j = 0; j < DIM - i - 1; ++j) {
            // Compare two elements and swap if first > second
            // Use of tmp variable (temporary)
            if (arr[j] > arr[j + 1]) {
                tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }

    puts("");

    puts("Ascending order arrray: ");
    for (int i = 0; i < DIM; i++) {
        printf("%d", arr[i]);
    }
    
    puts("");

}
  • 变更:需要在第二个for循环语句中使用“j”代替“i”。

相关问题