go語言寫的並行排序演算法(快速排序)

2021-07-06 10:42:02 字數 803 閱讀 5874

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...