c - 快速排序中的栈溢出错误

标签 c quicksort

当我在 VS2013 中运行快速排序程序时,出现以下错误:“quicksort.exe 中 0x008B18D9 处的首次机会异常:0xC00000FD:堆栈溢出(参数:0x00000001、0x00232F68)。

如果有此异常的处理程序,则程序可以安全地继续。”

void part(int arr[], int min, int max)
{

srand(time(NULL));

*emphasized text*int pivot, l, i;

if ((max - min) > 0)

    {
        pivot = rand() % max;
        swap(arr, pivot, max);
        l = 0;
        for (i = 0; i < max; i++)
        {
            if (arr[i] < arr[max])
            {
                swap(arr, i, l);
                l++;
            }
        }
        swap(arr, l, max);
        part(arr, min, (l - 1));
        part(arr, (l + 1), max);
    }
}

谢谢你。

最佳答案

枢轴的选择应在 minmax-1 之间。你需要这样的东西:

    pivot = min + rand() % (max - min);

关于c - 快速排序中的栈溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545788/

相关文章:

java - 我的快速排序算法运行速度太慢

php - 是否可以使快速排序函数对数组进行降序排序?

c - Visual C++ 无法识别注释行?

c - 如何让 MinGW GCC 识别 size_t 的 %zu 格式说明符?

android - 如何使用实验性 gradle 插件(NDK)在 android studio 中添加 openssl 库?

c - 为什么改变随机数生成器会改变 C 中快速排序的运行时间

python - 在 Python 中快速排序给定列表,同时打印每个步骤

c - 如何修复 "error: expected ; , or ) before"字符串参数

c - 将 shellcode 声明为 char[] 数组和 char* 之间的区别?

c - 快速排序效果不佳