pus*_*500 -1 c arrays sorting bubble-sort
所以我试图实现Cormen 的冒泡排序伪代码,但我似乎无法让它工作。
这是我对 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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了在互联网上找到的另一段代码,但结果并没有不同:
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]);
}
Run Code Online (Sandbox Code Playgroud)
我很想知道我的理解力在理解 Cormen 的实现和使冒泡排序发挥作用方面失败了!
至少存在三个问题:
伪代码假设数组索引从1到length。在 C 数组中,索引从0到length-1;您的代码不正确。
伪代码中的内部循环继续,但您的内部循环尝试向上计数:downto i+1
for(j=n;j<i+1;j++)
Run Code Online (Sandbox Code Playgroud)
应该
for (j = n; j > i; j--)
Run Code Online (Sandbox Code Playgroud)伪代码交换A[j]和A[j-1],但您的 C 代码交换A[j]和A[j+1]。
| 归档时间: |
|
| 查看次数: |
368 次 |
| 最近记录: |