现在有个题目,要求是在listbox中输出20个随机数字,然后点击排序按钮,实现用快速排序的方法对20个随机数字进行排序。我写了很久,发现如果使用递归函数一直有问题。请问哪位高手能告诉我个比较简单的快速排序的方法。谢谢!!!非常紧急!!

解决方案 »

  1.   

    一趟快速排序的算法如下:
     private void qkpass(int f, int r, int k,int[] a)
            {
                int i = f, j = r, t;
                while (i < j)
                {
                    while ((i < j) && (a[j] >a[i]))                                               {                                                      
                        j = j - 1;
                                                                           
                    }
                    if (i<j)
                    {
                        t = a[j];
                        a[j] = a[i];
                        a[i] = t;
                        i++;
                    }
                    while ((i < j) && (a[i] <a[j]))
                    {
                        i = i + 1;
                       
                    }
                    if (i < j)
                    {
                        t = a[i];
                        a[i] = a[j];
                        a[j] = t;
                        j--;
                    }
                   
                }
     k = i;
    递归算法:
    private void qksort(int[] a, int f, int r)
            {    
                for(int i=0;i<20;i++)
                {
                    qkpass(f, r,k,a);
                    qksort(a, f, k - 1);
                    qksort(a, k + 1, r);
                    
                }
            }