成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go語言將引入新型排序算法:Pdqsort

開發 前端
pdqsort實質為一種混合排序算法,在不同情況下切換到不同的排序機制,該實現靈感來自C++和RUST的實現,是對C++標準庫算introsort的一種改進,其理想情況下的時間復雜度為 O(n),最壞情況下的時間復雜度為 O(n* logn),不需要額外的空間。

哈嘍,大家好,我是asong。最近在逛Go倉庫時看到了一個commit是關于排序算法的,即pdqsort排序算法,Go計劃將在下一個版本中支持該排序算法,下面我們就具體來看一看這個事情;

commit地址:https://github.com/golang/go/commit/72e77a7f41bbf45d466119444307fd3ae996e257

該commit中介紹了pqdsort的測試結果:

  • 在所有基準測試中,pdqsort未表現出比以前的其它算法慢
  • 常見模式中pdqsort通常更快(即在排序切片中快10倍)

pdqsort實質為一種混合排序算法,在不同情況下切換到不同的排序機制,該實現靈感來自C++和RUST的實現,是對C++標準庫算法introsort的一種改進,其理想情況下的時間復雜度為 O(n),最壞情況下的時間復雜度為 O(n* logn),不需要額外的空間。

pdqsort算法的改進在于對常見的情況做了特殊優化,其主要的思想是不斷判定目前的序列情況,然后使用不同的方式和路徑達到最優解;如果大家想看一下該算法的具體實現,可以查看https://github.com/zhangyunhao116/pdqsort中的實踐,其實現就是對下面三種情況的不斷循環:

  • 短序列情況:對于長度在 [0, MAX_INSERTION] 的輸入,使用 insertion sort (插入排序)來進行排序后直接返回,這里的 MAX_INSERTION 我們在 Go 語言下的性能測試,選定為 24。
  • 最壞情況,如果發現改進的 quicksort 效果不佳(limit == 0),則后續排序都使用 heap sort 來保證最壞情況時間復雜度為 O(n*logn)。
  • 正常情況,對于其他輸入,使用改進的 quicksort 來排序

具體的源代碼實現可以自行查看,本文就不過多分析了,下面我們來看一下pdqsort的demo:

import (
"fmt"

"github.com/zhangyunhao116/pdqsort"
)

func main() {
x := []int{3, 1, 2, 4, 5, 9, 8, 7}
pdqsort.Slice(x)
fmt.Printf("sort_result = %v\n", x)
search_result := pdqsort.Search(x, 4)
fmt.Printf("search_result = %v\n", search_result)
is_sort := pdqsort.SliceIsSorted(x)
fmt.Printf("is_sort = %v\n", is_sort)
}

運行結果:

sort_result = [1 2 3 4 5 7 8 9]
search_result = 3
is_sort = true

對于此次排序算法優化你們有什么想法?快快上手體驗一下吧~。

參考鏈接:

https://github.com/golang/go/commit/72e77a7f41bbf45d466119444307fd3ae996e257

https://www.easemob.com/news/8361

https://github.com/zhangyunhao116/pdqsort

https://arxiv.org/pdf/2106.05123.pdf

責任編輯:武曉燕 來源: Golang夢工廠
相關推薦

2021-08-04 08:56:34

語言Go排序

2022-11-01 18:29:25

Go語言排序算法

2023-05-08 07:55:05

快速排序Go 語言

2021-06-09 09:06:52

Go語言算法

2022-04-06 08:58:39

歸并排序Go算法

2017-11-16 15:25:54

Go語言算法代碼

2014-06-23 09:49:32

Go語言Android谷歌

2014-07-01 10:01:36

Go安卓開發

2022-03-07 09:42:21

Go快速排序

2022-05-19 14:14:26

go語言限流算法

2021-06-08 10:41:00

Go語言算法

2009-08-11 08:46:21

Snow動態編程語言

2021-02-03 11:19:52

Go語言Go團隊服務器

2024-04-29 08:45:16

Go語言PDF

2021-07-16 04:57:45

Go算法結構

2018-03-12 22:13:46

GO語言編程軟件

2021-01-14 05:20:48

Go語言泛型

2023-08-15 08:01:07

Go 語言排序

2023-06-20 16:13:37

研究模型

2022-04-18 10:01:07

Go 語言漢諾塔游戲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av香蕉 | 久久中文字幕一区 | 黄色在线观看网址 | 国产一区在线免费 | 黄视频国产 | 精品国产乱码久久久久久丨区2区 | 中文字幕日韩欧美 | 国产精品久久久久久久久久久免费看 | 亚洲欧美视频 | 国产一区二区欧美 | 日韩欧美一区二区三区在线播放 | 91久久精品一区二区二区 | 91欧美精品成人综合在线观看 | 99精品国产一区二区青青牛奶 | caoporn地址 | 成人欧美一区二区三区在线播放 | 97视频成人 | www.av在线 | 日韩综合在线视频 | 中文字幕的av | 草比av| 国产在线观看 | 一级视频黄色 | 亚洲国产精品人人爽夜夜爽 | 免费看a| 国产一区二区欧美 | 日韩亚洲一区二区 | 天天拍天天草 | 国产激情片在线观看 | 蜜桃视频在线观看免费视频网站www | 九色91视频 | 蜜桃视频在线观看免费视频网站www | 国产高清在线精品 | 国产精品毛片 | 99在线精品视频 | 免费观看一级特黄欧美大片 | 免费黄色网址视频 | 久久国内精品 | 日韩中文字幕视频 | 久草新在线 | 国产一级视频在线 |