l白马非马l 发表于 2017-3-22 20:52:48

快速排序结果·后半段一直不成功。。。有大神么。。

这是源代码。。

#include<stdio.h>
int t;
int Partition(int a[],int p,int r){
      
int i=p,j=r;

while(i<j)
{
      
      int x;
      
      for(x=p+1;x<r;x++)
      {
                if(a>=a)
                {
                        i=x;
                        break;
                }
      }
      for(x=r-1;x>=p+1;x--)
      {
                if(a<=a)
                {
                        j=x;
                        break;
                }
      }
      
      if(i<j)
      {
                t=a;
            a=a;
            a=t;
               
      }
      
      
      
}

t=a;
a=a;
a=t;

return j;
}

int quicksort(int a[],int p,int r){
      
      int q;
      while(p<r)
      {
                for(int i=0;i<13;i++)
            {
                  printf("%d ",a);
            }
            printf("\n");
                q=Partition(a,p,r);
               
      }
      
      quicksort(a,p,q-1);
      
      quicksort(a,q+1,r);
}

int main(){
      
      int a={27,99,0,8,13,64,86,16,7,10,88,25,90};
      
      quicksort(a,0,13);
      
      

}

图片是运行截图

l白马非马l 发表于 2017-3-22 21:17:23

{:10_269:}

fc1735 发表于 2017-3-27 00:54:41

本帖最后由 fc1735 于 2017-3-27 00:57 编辑

#include<stdio.h>
int t;
int Partition(int a[], int p, int r) {

        int i = p, j = r;

        while (i<j)
        {

                int x;

                for (x = p + 1; x<r; x++)
                {
                        if (a >= a)
                        {
                               
                                break;
                        }
                }
                i = x;
                for (x = r ; x >= p + 1; x--)
                {
                        if (a <= a)
                        {
                               
                                break;
                        }
                }
                j = x;
                if (i<j)
                {
                        t = a;
                        a = a;
                        a = t;

                }



        }

        t = a;
        a = a;
        a = t;

        return j;
}

int quicksort(int a[], int p, int r) {

        int q;
        for (int i = 0; i<13; i++)
        {
                printf("%d ", a);
        }
        printf("\n");
        if (p<r)
        {
                q = Partition(a, p, r);

                quicksort(a, p, q - 1);

                quicksort(a, q + 1, r);
        }

       
}

int main() {

        int a = { 27,99,0,8,13,64,86,16,7,10,88,25,90 };

        quicksort(a, 0, 12);

       

}
页: [1]
查看完整版本: 快速排序结果·后半段一直不成功。。。有大神么。。