Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的程序快速排序不起作用_C#_Algorithm_Quicksort - Fatal编程技术网

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

C# 我的程序快速排序不起作用,c#,algorithm,quicksort,C#,Algorithm,Quicksort,我对快速排序的实现有问题。 问题看起来是随机的,排序的数组永远不会排序 我基于这个伪代码: 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 en

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

我基于这个伪代码:

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.
1程序快速排序1(l,r);
2开始
3如果`
这是我的代码:

    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);
        }

    }
public void快速排序(int[]A,int-l,int-r)
{
int t;
int s=0;
if(l
但它不起作用-我不知道为什么,我调试了这个,但仍然一无所获

拜托,有人能给我小费吗


致意。

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

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

for(inti=l+1;i如果存在重复条目,则它们可能会出现问题,因此

if (A[i] <= t);

if(A[i]我的第一个技巧是使用有意义的变量名,否则很难阅读。什么“不起作用”是什么意思?有什么异常?意外的结果吗?请更具体地说明你想要达到的目标以及你到底被困在了什么地方。伪代码的来源是什么?我无法用谷歌找到它。@他没有使用测试数组:
new int[]{5,1,4}
。排序为
4,1,5
快速排序的所有伪代码的问题在于,如果循环条件为