package main
import "fmt"
// threads 執行緒標識建立執行緒的個數
func quicksort(nums int, ch chan int, level int, threads int) //ch<-nums[0] 表示將nums[0] 資料寫到ch通道中
if len(nums) == 0
less := make(int, 0)//
greater := make(int,0)
left := nums[0] //快速排序的軸
nums = nums[1:]
//從左向右掃瞄資料 大於軸的放到greater裡小於的放到less中
for _,num_data := range nums
} left_ch := make(chan int, len(less))
right_ch := make(chan int, len(greater))
if(level <= threads)else
//合併資料
for i := range left_ch
ch<-left
for i := range right_ch
close(ch)
return
}func main()
ch := make(chan int)
go quicksort(x, ch, 0, 0) // 0 0 表示不限制執行緒個數
for v := range(ch)
}
Go語言 快速排序法
go 寫法 package main import fmt func main fmt.println freesort arr 1 2 3 4 5 7 9 func freesort arr int int else if v sign if len lefta 0if len righta 0v...
2 排序演算法 快速排序
問題描述 利用快速排序演算法對下列例項排序,在演算法執行過程中,寫出陣列 a第一次排序後被分割的過程。a 65,70,75,80,85,55,50,2 解題思想 在快速排序中,記錄的比較和交換是從兩端向中間進行的,關鍵字較大的記錄一次就能交換到後面的單元,總的比較和移動次數較少。對於輸入的陣列a p...
四 排序演算法 快速排序
快速排序的思想 選擇陣列中的乙個數作為中軸線,然後以這個中軸線為中心,大於中軸線的資料放到右邊,小於中軸線的資料放到左邊,然後每次比較完後再變中軸線的位置,不斷比較下去 include using namespace std template void quick sort t arry,int l...