gpt4 book ai didi

c# - 我的程序快速排序不起作用

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

我在实现快速排序时遇到问题。问题看起来是随机的,排序的数组永远不会排序。

我基于这个伪代码:

1 procedure quick sort1(l, r);
2 begin
3 if ` < r then
4 t ← A[l]; {t — pivot}
5 s ← l;
6 for i ← l + 1 to r do {move elements around pivot}
7 if A[i] < t then
8 s ← s + 1;
9 swap(A[s], A[i]);
10 end if;
11 end for;
12 swap(A[l], A[s]);
13 quick sort1(l, s − 1); {recursive call for both subarrays}
14 quick sort1(s + 1, r);
15 end if;
16 end.

这是我的代码:

    public void QuickSort(int[] A, int l, int r)
{
int t;
int s = 0;
if (l < r)
{
t = A[l];
s = l;
for (int i = l + 1; i < r; i++)
{
if (A[i] < t)
{
s = s + 1;
swaponator(ref A[s], ref A[i]);

}
}
swaponator(ref A[l], ref A[s]);
QuickSort(A, l, s - 1);
QuickSort(A, s + 1, r);
}

}

但它不起作用 - 我不知道为什么,我调试了这个但仍然没有。

请问有人可以给我提示吗?

最好的问候。

最佳答案

问题出在 for 循环中。要迭代数组中的所有数字,变量 i 必须达到 r 的值。

for (int i = l + 1; i <= r; i++)

关于c# - 我的程序快速排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44180253/

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