日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go语言编程:Go语言实现快速排序算法

發(fā)布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。