快速排序的坑

2021-06-18 10:40:02 字數 468 閱讀 6166

寫了程式這幾年,連個快速排序都默寫不出來,我真是擔心我的前途未來

以下是一些細節要注意的地方,不過我相信很多人如果默寫快排的話也會死在這幾點上的

#1:這行最重要了,如果這個判斷不加的話,當i==j且pdata[i]==middle的時候就死迴圈了

#2:不加就死迴圈了

ps:網上查了一些快排的演算法,有些也是錯的

void quicksort(int *pdata, int left, int right)

} while (i <= j);//下標交錯,停止

//當左邊部分有值(lefti),遞迴右半邊

if (right > i) }

int main()

; qsort(buf, 10);

for (int i = 0; i < 10; i++)

return 0;

}

填坑法 快速搞定快速排序演算法

該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。以乙個陣列作為示例,取區間第乙個數為基準數。我先上個圖讓大家感受一下,畫了很長時間,但是畫的還是很差,將就下看看吧...

「挖坑填坑」理解快速排序

快速排序的基本思路 找乙個基準元素,對陣列進行調整,調整的標準是,這個基準元素的左邊存放的都是比這個元素小的,右邊都是比這個元素大的。然後分而治之,對左右兩邊的子陣列利用同樣的規則調整,調整到每乙個子陣列中都只有乙個元素時結束。基本思想很簡單,主要是理解如何在確定基準元素之後,對陣列 子陣列 進行調...

快速排序(填坑與交換)

填坑 交換注意 填坑的本質就是交換,只不過交換把兩次填坑合併為一次交換過程而已。我自己也對 進行了梳理 public void quicksort int nums,int low,int high if i while iif i i j,指向主元的最終位置,用主元填這個坑 nums i curr...