Go语言编程:Go语言实现快速排序算法
生活随笔
收集整理的這篇文章主要介紹了
Go语言编程:Go语言实现快速排序算法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言
今天用Go語言實現(xiàn)下經(jīng)典排序算法——快速排序算法。主要是學(xué)習(xí)了Go語言,得用它來干點事情嘛,就用快速排序來練手。在Go語言語法方面,主要用到 切片數(shù)組,for循環(huán)(Go語言沒有while循環(huán)),遞歸函數(shù),各種流程控制。因為在Go語言中普通數(shù)組作為函數(shù)參數(shù)是值傳遞,所以用切片數(shù)組,作為函數(shù)參數(shù)傳入類似引用。其實Go語言蠻好學(xué)的,如果有其他語言基礎(chǔ),可能會覺得語法很怪異。快速排序的思路還是在這里簡單說一下,就看下圖吧。如果想看快排更詳細(xì)的說明請看 C語言實現(xiàn)的排序算法:快速排序算法實現(xiàn)及分析(遞歸形式和非遞歸形式)
快速排序思路
Go語言代碼實現(xiàn)
package mainimport "fmt" import "math/rand" import "time"func initData(arr []int) {for i, _ := range arr {arr[i] = rand.Intn(100)} } func QuickSort(arr []int, index_start int, index_end int) {//遞歸函數(shù)出口if index_start >= index_end {return}//基準(zhǔn)數(shù)num := arr[index_start]i := index_startj := index_end//找到num合適的位置for {if i >= j {break}//將比基準(zhǔn)數(shù)小的放到它的左邊f(xié)or {if i >= j {break}if arr[j] < num {arr[i] = arr[j]i++ //i往前移動break}j--}//將比基準(zhǔn)數(shù)大的放到它的右邊f(xié)or {if i >= j {break}if arr[i] >= num {arr[j] = arr[i]j-- //將往后移動break}i++}}//將基準(zhǔn)數(shù)放到 它應(yīng)該有的位置arr[i] = num//將左邊 進(jìn)行同樣的排序QuickSort(arr, index_start, i)//將右邊 進(jìn)行同樣的排序QuickSort(arr, i+1, index_end) }func main() {//設(shè)置隨機(jī)數(shù)種子rand.Seed(time.Now().UnixNano())n := 10arr := make([]int, n, n)//初始化切片數(shù)組initData(arr)fmt.Println(arr)//快速排序QuickSort(arr, 0, len(arr)-1)fmt.Println(arr) }運行結(jié)果
總結(jié)
以上是生活随笔為你收集整理的Go语言编程:Go语言实现快速排序算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 14. OD-inline patch入
- 下一篇: 五、CPU详解、寄存器详解、标志寄存器详