0
我真的很難理解快速排序。這是我的理解至今需要了解此快速排序
- 我們選擇樞軸
- 小於支點的所有元素都在樞軸
- 比樞軸更多的所有元素右側
- 使用遞歸去左邊去繼續這個過程
現在我的問題是,我不明白如何繼續最後一步是遞歸。到目前爲止,我有以下幾點。我只是想要一個非常基本的。該陣列將不會有重複
void quickSort(int *ptr,int lowindex , int highindex)
{
int left = lowindex ;
int right = highindex;
int pivot = ptr[rand()%highindex];
while(left < right)
{
while(ptr[left] < pivot)
{
left++;
}
while(ptr[right] > pivot)
{
right--;
}
//Now swap the two
int temp = ptr[left];
ptr[left] = ptr[right];
ptr[right] = temp;
}
std::cout << "Current Array is : ";
for(int i=0;i<7;i++)
{
std::cout << ptr[i] << "," ;
}
std::cout << "\n";
//How to add recursion ?
}
而且是有while(left < right)
環路機會卡住 - 即左,右不會改變,因此不斷循環?如果是的話我該如何處理呢?
當'ptr [left]'和'ptr [right]'都指向等於主鍵的值時會發生什麼? –
嗯。我沒有考慮到這一點 – Rajeshwar