最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Go?將在下個版本支持新型排序算法pdqsort

 更新時間:2022年04月22日 14:19:01   作者:CSDN資訊  
這篇文章主要介紹了Go?將在下個版本支持新型排序算法:pdqsort,而就Go支持pdqsort算法,在HN上引起了不少的討論,有人表示,我們研究排序算法這么久了,很驚訝我們還能想出能產(chǎn)生實際改進(jìn)的優(yōu)化方案。對此,你怎么看,快快上手體驗一下吧

繼Go 1.18支持泛型后,Go 將在下個版本中支持pdqsort排序算法再次引起了開發(fā)者們的熱切討論。

在這里插入圖片描述

目前,Go倉庫的最新commit中提交了pdqsort的相關(guān)功能描述:

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

那么pdqsort是什么呢?

pdqsort是Pattern-defeating quicksort的縮寫,是一種新型的排序算法,將隨機(jī)快速排序的快速平均情況與堆排序的最壞情況快速組合在一起,同時在具有特定模式的輸入上實現(xiàn)了線性時間。 pdqsort是David Mussers introsort的擴(kuò)展和改進(jìn)。 在zlib許可下,所有代碼都是免費的。

目前在C++和Rust中均有實現(xiàn),而據(jù)不少開發(fā)者實測發(fā)現(xiàn),pdqsort較常用的introsort會有較大的性能提升。

C++ 代碼Demo:

#include <algorithm>
#include <functional>
#include <array>
#include <iostream>
#include <string_view>
 
int main()
{
    std::array<int, 10> s = {5, 7, 4, 2, 8, 6, 1, 9, 0, 3};
    auto print = [&s](std::string_view const rem) {
        for (auto a : s) {
            std::cout << a << ' ';
        }
        std::cout << ": " << rem << '\n';
    };
    std::sort(s.begin(), s.end());
    print("sorted with the default operator<");
    std::sort(s.begin(), s.end(), std::greater<int>());
    print("sorted with the standard library compare function object");
    struct {
        bool operator()(int a, int b) const { return a < b; }
    } customLess;
    std::sort(s.begin(), s.end(), customLess);
    print("sorted with a custom function object");
    std::sort(s.begin(), s.end(), [](int a, int b) {
        return a > b;
    });
    print("sorted with a lambda expression");
}

執(zhí)行結(jié)果:

0 1 2 3 4 5 6 7 8 9 : sorted with the default operator<
9 8 7 6 5 4 3 2 1 0 : sorted with the standard library compare function object
0 1 2 3 4 5 6 7 8 9 : sorted with a custom function object
9 8 7 6 5 4 3 2 1 0 : sorted with a lambda expression

Rust 代碼Demo:

extern crate pdqsort;

let mut v = [-5i32, 4, 1, -3, 2];
pdqsort::sort(&mut v);
assert!(v == [-5, -3, 1, 2, 4]);
pdqsort::sort_by(&mut v, |a, b| b.cmp(a));
assert!(v == [4, 2, 1, -3, -5]);
pdqsort::sort_by_key(&mut v, |k| k.abs());
assert!(v == [1, 2, -3, 4, -5]);

而就Go支持pdqsort算法,在HN上引起了不少的討論,有人表示,我們研究排序算法這么久了,很驚訝我們還能想出能產(chǎn)生實際改進(jìn)的優(yōu)化方案。對此,你怎么看,快快上手體驗一下吧。

參考鏈接:

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

https://news.ycombinator.com/item?id=31106157

https://en.cppreference.com/w/cpp/algorithm/sort

到此這篇關(guān)于Go 將在下個版本支持新型排序算法pdqsort的文章就介紹到這了,更多相關(guān)Go 排序算法pdqsort內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang橋接模式講解和代碼示例

    Golang橋接模式講解和代碼示例

    橋接是一種結(jié)構(gòu)型設(shè)計模式,可將業(yè)務(wù)邏輯或一個大類拆分為不同的層次結(jié)構(gòu),從而能獨立地進(jìn)行開發(fā),本文將通過代碼示例詳細(xì)給大家介紹一下Golang橋接模式,需要的朋友可以參考下
    2023-06-06
  • Golang使用cobra實現(xiàn)命令行程序的示例代碼

    Golang使用cobra實現(xiàn)命令行程序的示例代碼

    Cobra 是 Go 語言中一個強(qiáng)大的命令行應(yīng)用庫,它提供了創(chuàng)建命令行工具所需的基本結(jié)構(gòu)和功能,被許多開發(fā)者用于構(gòu)建各種命令行工具和應(yīng)用程序,本文將給大家介紹Golang使用cobra實現(xiàn)命令行程序,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • 全面解析Go語言中crypto/sha1庫

    全面解析Go語言中crypto/sha1庫

    crypto/sha1在Go語言標(biāo)準(zhǔn)庫中是一個強(qiáng)大且實用的工具,適用于多種應(yīng)用場景,本文就詳細(xì)的介紹了Go語言中crypto/sha1庫,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 詳解Golang中g(shù)omock的使用場景和方法

    詳解Golang中g(shù)omock的使用場景和方法

    gomock是Go編程語言的模擬框架, 它與Go的內(nèi)置測試包很好地集成在一起,但也可以在其他上下文中使用,本文主要介紹了gomock的使用場景和方法,感興趣的可以了解下
    2024-10-10
  • golang testing使用示例小結(jié)

    golang testing使用示例小結(jié)

    golang自帶了testing測試包,使用該包可以進(jìn)行自動化的單元測試,輸出結(jié)果驗證,并且可以測試性能,下面通過示例代碼給大家講解golang testing使用示例小結(jié),感興趣的朋友一起看看吧
    2024-05-05
  • Go Java算法最大單詞長度乘積示例詳解

    Go Java算法最大單詞長度乘積示例詳解

    這篇文章主要為大家介紹了Go Java算法最大單詞長度乘積示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • golang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • golang環(huán)形隊列實現(xiàn)代碼示例

    golang環(huán)形隊列實現(xiàn)代碼示例

    這篇文章主要介紹了golang環(huán)形隊列實現(xiàn)代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 重學(xué)Go語言之如何使用Redis

    重學(xué)Go語言之如何使用Redis

    Redis是我們開發(fā)應(yīng)用程序中很常用的NoSQL數(shù)據(jù)庫,那么在Go語言中要如何連接和操作Redis呢,在這篇文章中,我們就來一起來探究一下吧
    2023-08-08
  • Go項目的目錄結(jié)構(gòu)詳解

    Go項目的目錄結(jié)構(gòu)詳解

    這篇文章主要介紹了Go項目的目錄結(jié)構(gòu),對基礎(chǔ)目錄做了講解,對項目開發(fā)中的其它目錄也一并做了介紹,需要的朋友可以參考下
    2014-10-10

最新評論

淮北市| 吐鲁番市| 肇庆市| 张家口市| 健康| 竹北市| 涞水县| 从江县| 布尔津县| 咸丰县| 朝阳县| 景东| 鹤壁市| 洪泽县| 鹤庆县| 门头沟区| 宜宾县| 江西省| 逊克县| 临沧市| 外汇| 勃利县| 东山县| 清新县| 崇信县| 平谷区| 花莲县| 观塘区| 邵阳市| 德昌县| 栾川县| 通榆县| 兴和县| 五台县| 普安县| 元朗区| 兰溪市| 宜丰县| 化隆| 台山市| 绥中县|