第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

go : 這種情況下需要通道嗎?

go : 這種情況下需要通道嗎?

Go
開心每一天1111 2021-07-03 09:01:06
http://play.golang.org/p/Xn3Qw7xAi3很難理解渠道。我這里有func main() {  in := make(chan int)  out := make(chan int)  go QuickSort(in, out)  for i := 0; i < 100; i++ {    in <- rand.Intn(1000)  }  close(in)  for i := range out {    fmt.Println(i)  }}這使得兩個(gè)名為 in、out 和 goroutine 的通道成為 Quicksort 函數(shù)。1. QuickSort 如何將 in 和 out 作為參數(shù)?它是否從下面的行接收?  in <- rand.Intn(1000)2. 這種情況下使用通道是最優(yōu)的嗎 動(dòng)態(tài)接收值看起來(lái)非常整潔......沒有通道的排序會(huì)有什么不同?這種情況比較快?
查看完整描述

3 回答

?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊

我的原始文章回答了你的第二個(gè)問題,我認(rèn)為......

只是為了好玩 - 基于頻道的快速排序。

有趣的是,您可以在無(wú)法索引輸入的情況下進(jìn)行快速排序。它可能是 O(n log n) 進(jìn)行比較,但它是 O(n) 通道和 go 例程,所以可能不是有史以來(lái)最有效的快速排序;-)

如果你給它排序的輸入,它也有最壞情況的復(fù)雜度 O(n2),所以不要這樣做!

這確實(shí)有點(diǎn)有趣 - 但它使用了大量的通道和 goroutines,這將使它比傳統(tǒng)的快速排序更慢并使用更多的內(nèi)存。


查看完整回答
反對(duì) 回復(fù) 2021-07-12
?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

1. QuickSort 如何將 in 和 out 作為參數(shù)?它是否從下面的行接收?

此代碼將 100 個(gè)隨機(jī)推送到名為“in”的通道中。您之前將此通道的引用傳遞給了快速排序函數(shù)。這與我向函數(shù)傳遞線程安全堆棧,然后從調(diào)用者上下文中將新元素推送到該堆棧上的想法相同。

  for i := 0; i < 100; i++ {
    in <- rand.Intn(1000)
  }
  close(in)

2.這種情況下使用通道是最優(yōu)的嗎?動(dòng)態(tài)接收值看起來(lái)非常整潔......沒有通道的排序會(huì)有什么不同?這種情況比較快?

我會(huì)認(rèn)為這是一個(gè)很酷的玩具示例,說(shuō)明如何靈活地使用頻道(和流式排序)。在大多數(shù)常見情況下,獲取切片并對(duì)其調(diào)用sort.Sort通常會(huì)更快/更容易。值得注意的是,在大多數(shù)實(shí)際情況下,您將通過(guò)創(chuàng)建帶有緩沖區(qū)通道獲得更好的吞吐量,因?yàn)檫@將減少 goroutine 之間的調(diào)度程序切換。通道非??欤鼈?nèi)匀挥虚_銷,如果您實(shí)際上沒有并行處理,那么開銷不會(huì)給您帶來(lái)任何好處。

如果您想并行處理,請(qǐng)不要忘記設(shè)置 GOMAXPROCS > 1 并使用緩沖通道。


查看完整回答
反對(duì) 回復(fù) 2021-07-12
  • 3 回答
  • 0 關(guān)注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)