我寫一個程序做的3.我的快速排序算法在這裏的中位數quicksorting:我要去哪裏錯功能邏輯
void quickSort(vector<int> & a, int left, int right) {
if (left + 10 <= right) {
const int & pivot = median3(a, left, right);
int i = left, j = right -1;
for (; ;){
while(a [++i] < pivot){}
while(pivot < a[--j]){}
if(i < j)
swap(a[i], a[j]);
else
break;
}
swap(a[i], a[right-1]);
quickSort(a,left,i-1);
quickSort(a,i+1,right);
}
}
我產生的向量進行排序(排序僅矢量[0]雖然)
vector<vector<int> > vectorList;
for (unsigned int j = 0; j < 8; j++) {
vector<int> tmp(100*pow(2,j));
for (unsigned int l = 0; l<tmp.size(); l++)
tmp[l] = (rand() % 20000);
vectorList.push_back(tmp);
而且從主在這裏我要快速排序呼叫:
quickSort(vectorList[0], 0, vectorList[0].size()-1);
我的計劃目前將打印取出隨機值,但實際上將值排序出來有困難。我認爲我有一切正確的算法明智,但顯然不是。我已經經歷過多次,並且無法弄清楚問題所在。是否有任何新的眼睛能夠發現問題並就如何糾正問題提供一些建議?非常感謝!
你爲什麼有這麼多的測試數據的測試?只需嘗試對4,5或6個數字進行排序,並隨着算法一起跟隨代碼。另外,排序*已知*號碼,而不是隨機數字。原因是你想從一個可以正常工作的基線開始,隨機化數據不是一個好的開始。 – PaulMcKenzie
跳出的一件事是這些循環:'while(a [++ i]
@AlgirdasPreidžius,它是在書中給出的算法。我認爲它看起來也有點時髦。 – BondyeLwa