2016-02-02 64 views
0

所以這是我第一次在計算器發佈一些快速排序算法不靈

我試圖實現快速排序算法,但是當我編譯代碼並嘗試運行它掛

所以這是代碼

#include <iostream> 
using namespace std; 

void swap(int& num1,int& num2) 
{ 
    int temp = num2; 
    num2 = num1; 
    num1 = temp; 
} 

int partitionTest(int arr[],int p,int r) 
{ 
    int i = p; 
    for(int j =p ;j<r-1;j++) 
    { 
     if(arr[j]> arr[r-1]) 
     { 
      i++; 
      swap(arr[j],arr[r-1]); 
     } 
     swap(arr[i],arr[r]); 
     return i; 
    } 
} 

void quicksort(int arr[],int p,int r) 
{ 
    if (p < r) 
    { 
     int temp = partitionTest(arr, p, r); 
     quicksort(arr, p, temp - 1); 
     quicksort(arr, temp + 1, r); 
    } 

} 


int main() 
{ 
    int arr[5]={5,4,3,2,1}; 

    quicksort(arr,0,4); 

    cout << arr[0] << " "; 
    cout << arr[1] << " "; 
} 

我希望任何形式的幫助

+3

您應該仔細研究一下調試器的代碼,看看錯誤發生的位置,並查看當時的程序狀態。 –

+4

在循環中返回某些內容會停止循環並退出該方法,並且無條件地調用該方法。 – Neil

+1

您在每個forloop的第一次迭代中返回 – Glubus

回答

1

三遞歸入快速排序()中,p = 3,且r = 4。 partitionTest()中的for條件表示如果j < r-1,這將變成3 < 3並且循環從不執行。該函數退出時沒有返回值,所以temp未定義。