gpt4 book ai didi

c - QuickSort 中的分割

转载 作者:行者123 更新时间:2023-11-30 19:33:09 26 4
gpt4 key购买 nike

当我尝试运行此 QuickSort 时,出现段错误:11,但它编译正常。我使用驱动程序运行它,这就是我使用 fastsort() 和 fastsortR() 的原因。是什么导致了分段?

/*  -------- Quick sort stuff starts here --------- */
int partition(int array[], int start, int stop) {
int compars = 0;
int pivot = array[stop];
int i = start - 1;
for (int j = start; j <= stop - 1; j++) {
if (array[j] <= pivot) {
i++;
int temp = array[j];//swaps values of i and j
array[j] = array[i];
array[i] = temp;
}
compars++;
}
int temp = array[i + 1];
array[i + 1] = array[stop];
array[stop] = temp;
return compars;
}

int quickSortR(int array[], int start, int stop) {
int compars = 0;
int mid = array[stop];
if (start < stop) {
compars = compars + partition(array, start, stop);
quickSortR(array, start, mid - 1);
quickSortR(array, mid+1, stop);
}
return compars;
}

int quickSort(int array[], int n) {
return quickSortR(array, 0, n);
}

/* ----------- end quick sort stuff ----------------- */

最佳答案

您使用数组元素的数量作为 stop 参数来调用 quicksort,但将数据透视表初始化为 intivot = array[stop]; 。您正在读取超出数组末尾的内容。未定义的行为。

代码中可能还有其他问题,但这本身就解释了崩溃。

关于c - QuickSort 中的分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46239704/

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