gpt4 book ai didi

c++ - 快速排序最坏情况的提示

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:25 26 4
gpt4 key购买 nike

我正在尝试实现快速排序并找出最坏情况下的处理部分。当 pivot 选择数组中最大或最小的元素时,我卡在了我的算法中间,不知道如何处理它。

#include <iostream>

void swap(int item1, int item2)
{
int temp = item1;
item1 = item2;
item2 = temp;
}

int partition(int array[], unsigned int left, unsigned int right)
{
int pivot = array[left];
int pivot_index = left;

for(++left, right; left <= right;)
{
if(array[left] >= pivot && array[right] < pivot)
swap(array[left], array[right]);

if(array[left] < pivot)
left++;
if(array[right] >= pivot)
right++;
}

swap(array[right], pivot_index);

return right;
}

void quicksort(int array[], unsigned int left, unsigned int right)
{
if(left < right)
{
int index = partition(array, left, right);
quicksort(array, 0, index - 1);
quicksort(array, index + 1, right);
}
}

int main()
{
int unsortedarray[] = {10, 0, 9, 3, 4, 5, 8, 1};
int length = sizeof(unsortedarray) / sizeof(int);

quicksort(unsortedarray, 0, length - 1);

for(unsigned int index = 0; index < static_cast<unsigned int>(length); ++index)
std::cout << unsortedarray[index] << std::endl;

return 0;
}

最佳答案

您的 swap 正在处理要交换的值的本地拷贝;它不会对参数进行任何更改。

关于c++ - 快速排序最坏情况的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28732713/

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