gpt4 book ai didi

c - 我应该如何修复此快速排序功能?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:21 26 4
gpt4 key购买 nike

根据快速排序算法的在线资源,我重构了以下函数:

void quickSort(int *array, int arrayLength, int first, int last) {

int pivot, j, i, temp;
if (first < last) {
pivot = first;
i = first;
j = last;

while (i < j) {
while (array[i] <= array[pivot] && i < last) {
i++;
}
while (array[j] > array[pivot]) {
j--;
}
if (i < j) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}

temp = array[pivot];
array[pivot] = array[j];
array[j] = temp;
quickSort(array, arrayLength, first, j-1);
quickSort(array, arrayLength, j+1, last);
}
printBars(array, arrayLength);
}

为了看看它是如何发挥它的魔力的,我编写了一个 printBars 过程,它打印数组的内容,就像这样

int bars[] = {2, 4, 1, 8, 5, 9, 10, 7, 3, 6};
int barCount = 10;
printBars(bars, barCount);

enter image description here

我在前面提到的数组 bars[] 上运行 quickSort 后的最终结果是这个图形

quickSort(bars, barCount, 1, 10);

enter image description here

我的问题:

  1. 10 去哪儿了?
  2. 为什么有一个 0 作为值之一(原始数组没有它)?

最佳答案

数组索引是从零开始的。所以你只想纠正你的电话

quickSort(bars, barCount, 0, 9);

或者最好

quickSort(bars, barCount, 0, barCount - 1);

关于c - 我应该如何修复此快速排序功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19988602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com