c - 冒泡排序在 C 中不排序(Cormen 的伪代码)

标签 c arrays sorting bubble-sort

所以我试图实现 Cormen's pseudocode用于冒泡排序,但我似乎无法让它工作。

这是我对 Cormen 伪代码的处理方法:

void BUBBLE_SORT(int a[200], int n) {
    int i, j, aux;

    for (i = 1; i <= n - 1; i++) {
        for (j = n; j < i + 1; j++) {
            if (a[j] < a[j - 1]) {
                aux = a[j];
                a[j] = a[j + 1];
                a[j + 1] = aux;
            }
        }
    }
}

我尝试了在互联网上找到的另一段代码,但结果并没有不同:

void bubbleSort(int arr[], int n) {
    int i, j;     
    for (i = 0; i < n - 1; i++)          
        for (j = 0; j < n - i - 1; j++)  
            if (arr[j] > arr[j + 1]) 
                swap(&arr[j], &arr[j + 1]);  
}

我很想知道我的理解力在理解 Cormen 的实现以及使冒泡排序发挥作用方面失败了!

最佳答案

至少存在三个问题:

  1. 伪代码假设数组索引从 1length。在 C 中,数组的索引范围是从 0length-1;您的代码不正确。

  2. 伪代码中的内部循环向下到 i+1,但您的内部循环尝试向上计数 :

    for(j=n;j<i+1;j++)
    

    应该是

    for (j = n; j > i; j--)
    
  3. 伪代码交换了 A[j]A[j-1],但 C 代码交换了 A[j] > 和A[j+1]

关于c - 冒泡排序在 C 中不排序(Cormen 的伪代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54212804/

相关文章:

c# - 打印带有字母的倒三角形

c - 用 C 解析 wtmp 日志

javascript - 如何找到 typedArray 的类型?

javascript - 在 JS/JQuery 中查找 toArray 创建的数组中元素的索引

iOS:根据它们相对于 sibling 的位置对一组 UIButton 进行排序?

python - 按属性字母数字排序对象列表

c - 如何通过 C 中的函数引用来传递数组?

c - 在 C 中返回多维字符数组

javascript - 将值与数组进行比较

sorting - Elasticsearch:按字母顺序对西类牙双名进行排序