設要排序的陣列是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...