2017-09-21 4 views
-1

私は擬似コードを与えられて、私はかなり正しい形をしていますが、私はVisual Studioでクイックソートを実行しようとするたびにスタックオーバーフローを与える理由はありません。以下は私が作った機能です。C++クイックソートを与えるスタックオーバーフロー

template <typename T> 
void quickSort(T list[], int lowerBound, int upperBound) 
{ 
int i = lowerBound; 
int j = upperBound; 
T tmp; 
T pivot = list[(lowerBound + upperBound)]/2; 

while (i <= j) 
{ 
    while (list[i] < pivot) 
    { 
     i = i + 1; 
    } 

    while (list[j] > pivot) 
    { 
     j = j - 1; 
    } 

    if (i <= j) 
    { 
     tmp = list[i]; 
     list[i] = list[j]; 
     list[j] = tmp; 
     i = i + 1; 
     j = j - 1; 
    } 
} 
if (lowerBound < j) 
    quickSort(list, lowerBound, j); 
if (i < upperBound) 
    quickSort(list, i, upperBound); 
} 

ありがとうございます!

+1

には、私は穏やかに混乱していました。私はあなたのクイックソートが何とかいつもこのウェブサイトにあなたを導いたと思っていました。これは私が眠る必要があるサインです。 – DrZoo

+1

はリスト[(lowerBound + upperBound)/ 2]でピボットしないでください。 – thebenman

+0

@thebenmanあなたは絶対に正しいです。ありがとうございました! – DavidM

答えて

2

変更T pivot = list[(lowerBound + upperBound)]/2;T pivot = list[(lowerBound + upperBound)/2];

関連する問題