gpt4 book ai didi

c# - 堆栈溢出与快速排序实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:05:33 25 4
gpt4 key购买 nike

<分区>

我正在尝试实现快速排序算法(在 C# 中),这是我的代码:

public static void sort(ref int[] A)
{
if (A.Length==0 || A.Length==1)
{
return;
}
quickSort(ref A,0,A.Length-1);
}

private static void quickSort(ref int[] A, int left, int right)
{
if (left >= right || left < 0 || right < 0)
return;

int pivot = A[left];

int i = left - 1;
int j = right + 1;

while (true)
{
do
{
i++;
}
while (A[i] < pivot);

do
{
j--;
}
while (A[j] > pivot);

if (i >= j)
break;

int temp = A[i];
A[i] = A[j];
A[j] = temp;
}

quickSort(ref A,left,j);
quickSort(ref A, j + 1, right);
}

这个算法工作正常,但是有些地方似乎不合逻辑,我选择了pivot等于A[left]然后在 while(true)循环我写了do{i++}while(A[i]<pivot) , 我现在注意到第一次它会增加 i所以A[i]将等于 A[left]这是枢轴值,所以这应该意味着这个 do while循环将在 i 的第一个增量后停止,因此当我尝试添加 = 时运算符到 while这样它就不会在第一次递增后停止:while(A[i]<=)我得到了一个堆栈溢出异常(当我在第二个 do while : while(A[j]>=pivot) 中添加相等运算符时也得到了堆栈溢出异常),我不明白为什么会这样,有人能解释一下吗?

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