gpt4 book ai didi

c++ - C++ 中的这种快速排序实现有什么问题?

转载 作者:行者123 更新时间:2023-11-28 03:00:44 25 4
gpt4 key购买 nike

这是我实现的源代码

#include <iostream>
using namespace std;

int partition (int arr[], int l, int h)
{

int pivot = arr[l];
int i=l;
int j=h;

while (i<j)
{
while(arr[i] <= pivot) ++i;
while(arr[j] > pivot) --j;
if (i>=j) break;

swap(arr[i], arr[j]);
}
swap(arr[j], arr[0]);

return j;

}

/* A[] --> Array to be sorted, l --> Starting index, h --> Ending index */
void quickSort(int A[], int l, int h)
{
if (l < h)
{
int p = partition(A, l, h); /* Partitioning index */
quickSort(A, l, p - 1);
quickSort(A, p + 1, h);
}
}

void printArr( int arr[], int n )
{
int i;
for ( i = 0; i < n; ++i )
printf( "%d ", arr[i] );
}
// Driver program to test above functions
int main()
{
int arr[] = {4, 5, 2, 1, 3, 2, 3};
int n = sizeof( arr ) / sizeof( *arr );
quickSort( arr, 0, n - 1 );
printArr( arr, n );
return 0;
}

它为数组的某些索引提供了垃圾值。我使用数组的第一个元素作为枢轴元素。有人可以解决这个问题吗?

最佳答案

替换行

swap(arr[j], arr[0]);

通过

swap(arr[j], arr[l]);

还要确定我们是否需要检查索引 i 和 j 是否可能超出数组边界

关于c++ - C++ 中的这种快速排序实现有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20919331/

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