排序演算法Golang實現之快速排序

基本原理

1。首先設定一個分界值,透過該分界值將陣列分成左右兩部分。

2。將大於或等於分界值的資料集中到陣列右邊,小於分界值的資料集中到陣列的左邊。此時,左邊部分中各元素都小於或等於分界值,而右邊部分中各元素都大於或等於分界值。

3。然後,左邊和右邊的資料可以獨立排序。對於左側的陣列資料,又可以取一個分界值,將該部分資料分成左右兩部分,同樣在左邊放置較小值,右邊放置較大值。右側的陣列資料也可以做類似處理。

4。重複上述過程,可以看出,這是一個遞迴定義。透過遞迴將左側部分排好序後,再遞迴排好右側部分的順序。當左、右兩個部分各資料排序完成後,整個陣列的排序也就完成了。

程式碼實現

package sort// Quick 快速排序func Quick(nums []int, start, end int) { if start >= end { return } low, hight := start, end pivot := nums[low] for low < hight { for low < hight { if nums[hight] >= pivot { hight—— continue } nums[low] = nums[hight] break } for low < hight { if nums[low] <= pivot { low++ continue } nums[hight] = nums[low] break } if low == hight { nums[low] = pivot } } Quick(nums, start, low-1) Quick(nums, hight+1, end) return}

排序演算法Golang實現之希爾排序

排序演算法Golang實現之選擇排序

排序演算法Golang實現之堆排序

排序演算法Golang實現之氣泡排序

排序演算法Golang實現之插入排序

TAG: lownumshight排序分界