02 快速排序

2022-07-10 01:51:15 字數 1222 閱讀 8781

設要排序的陣列是a[0]……a[n-1],首先任意選取乙個資料(通常選用陣列的第乙個數)作為關鍵資料,

然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。

值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。

一趟快速排序的演算法是:

5.使得j=j-1,i=i+1,直至找到為止。找到符合條件的值,進行交換的時候i, j指標位置不變。另外,i==j這一過程一定正好是i+或j-完成的時候,此時令迴圈結束)。

快速排序838

else

3942}43

44//

從前往後(從左向右)找乙個比x大的數字,放在我們的坑裡面 現在的坑位於j的位置

45while (true && i

4652

else

5356}57

}59//跳出迴圈 現在i==j i是中間位置

60 dataarray[i] = x;//

left -i- right

62 quicksort(dataarray, left, i - 1

);63 quicksort(dataarray, i + 1

, right);64}

65}67static

void main(string

args)68;

7071 quicksort(data, 0, data.length - 1

);72

73foreach (var temp in

data)

7477

console.readkey();78}

79}80 }

遞迴 快速排序 快速排序

問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...

演算法 排序 02

從序列中選擇乙個軸點元素 pivot 假設每次選擇 0 位置的元素為軸點元素 利用 pivot 將序列分割成 2 個子序列 1.將小於 pivot 的元素放在pivot前面 左側 2.將大於 pivot 的元素放在pivot後面 右側 3.等於pivot的元素放哪邊都可以 對子序列進行上述操作,直到...

排序演算法02 選擇排序

首先,從 0,len 中找到陣列中最小的元素,讓它與第乙個元素交換。接著從 1,len 中找出最小的元素,讓它與第二個元素交換。迴圈往復,最終使得陣列從小到大排序。視覺化效果 這裡 created by yiying on 2017 4 22.function w 選擇排序演算法實現 selecti...