2015-11-19 110 views
-1

什麼是錯的這個快速排序的代碼,我的得到錯誤的輸出一定的輸入情況:什麼是錯在這個快速排序的代碼

#include<stdio.h> 

void quick_sort(int A[],int start,int end) 
{ 
    int pIndex; 
    if(start<end) 
    { 
     pIndex=partion(A,start,end); 
     quick_sort(A,start,pIndex-1); 
     quick_sort(A,pIndex+1,end); 
    } 

} 

int partion(int A[],int start,int end) 
{ 
    int i,temp,pIndex=start; 
    int pivot=A[end]; 
    for(i=start;i<end;i++) 
    { 
     if(A[i]<=pivot) 
     { 
      temp=A[i]; 
      A[i]=A[pIndex]; 
      A[pIndex]=A[i]; 
      pIndex++; 
     } 
    } 

    temp=A[pIndex]; 
    A[pIndex]=A[end]; 
    A[end]=temp; 
    return pIndex; 
} 

int main() 
{ 
    int A[100],size,i; 
    scanf("%d\n",&size); 
    for(i=0;i<size;i++) 
    { 
     scanf("%d",&A[i]); 
    } 
    quick_sort(A,0,size-1); 
    for(i=0;i<size;i++) 
    { 
     printf("%d\t",A[i]); 
    } 
    return 0; 
} 

我得到錯誤的輸出以下輸入: Output

我應該怎麼做才能按升序獲得排序

+1

它不排序在[全部](http://ideone.com/tCoTjM)。 – Michi

+1

請勿將文本輸入和輸出添加爲圖像。 (除非你真的把這個JPEG作爲輸出,這將是相當令人驚訝的。) – usr2564301

回答

5

你真的是指A[pIndex]=A[i];或它應該是A[pIndex]=temp; - 這應該是一個交換操作。

+0

真的非常感謝您的幫助。對不起,我發現我的錯誤 –