Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了golang版本快速排序实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

quicksort简介

使用快速排序算法,对slice进行排序。目前支持int,int8,int16,int32,int64,float32,float64,String,uint,uint8,uint16,uint32,uint64类型的slice

连接地址:github上quicksort源码地址

使用例子

package main

import (
    "fmt"
    "time"

    "github.com/hzwy23/quicksort"
)

func main() {

    var t2 []int = []int{11, 31, 43, 3, 48, 23}
    quicksort.QuickSort(t2)
    fmt.Println("int",t2)

    var t28 []int8 = []int8{11, 23}
    quicksort.QuickSort(t28)
    fmt.Println("int8",t28)

    var t216 []int16 = []int16{11, 23}
    quicksort.QuickSort(t216)
    fmt.Println("int16",t216)

    var t232 []int32 = []int32{11, 23}
    quicksort.QuickSort(t232)
    fmt.Println("int32",t232)

    var t264 []int64 = []int64{11, 23}
    quicksort.QuickSort(t264)
    fmt.Println("int64",t264)

    var t3 []String = []String{"123","211","abc","def","1sd","6dw","235"}
    quicksort.QuickSort(t3)
    fmt.Println("String",t3)

    var tf32 []float32 = []float32{3.2345, 1.242345, 3.11234, 6.41234, 4.11235}
    quicksort.QuickSort(tf32)
    fmt.Println("float32",tf32)

    var t4 []float64 = []float64{3.2345, 4.11235}
    quicksort.QuickSort(t4)
    fmt.Println("float64",t4)
    var t8 []int8 = []int8{19, 63, 27, 41, 24, 64, 34, 65, 6, 1, 23, 5, -1, -5, -2, 4}
    quicksort.QuickSort(t8)
    fmt.Println("t8",t8)
    var t16 []int16 = []int16{19, 234, 645, 4123, 4234}
    quicksort.QuickSort(t16)
    fmt.Println("t16",t16)
    var t32 []int32 = []int32{19, 64345, 4234}
    quicksort.QuickSort(t32)
    fmt.Println("t32",t32)
    var t64 []int64 = []int64{19, 4234}
    quicksort.QuickSort(t64)
    fmt.Println("t64",t64)

    var uTint []uint = []uint{12, 4, 5}
    quicksort.QuickSort(utint)
    fmt.Println("uTint",utint)

    var uTint8 []uint8 = []uint8{12, 5}
    quicksort.QuickSort(uTint8)
    fmt.Println("uTint",uTint8)

    var uTint16 []uint16 = []uint16{12, 5}
    quicksort.QuickSort(uTint16)
    fmt.Println("uTint",uTint16)

    var uTint32 []uint32 = []uint32{12, 5}
    quicksort.QuickSort(uTint32)
    fmt.Println("uTint",uTint32)

    var uTint64 []uint64 = []uint64{12, 5}
    quicksort.QuickSort(uTint64)
    fmt.Println("uTint",uTint64)
}

性能介绍

golang sdk包中已经实现了quicksort,但是在使用时,需要先转换一次,才能使用sdk中提供的quicksort方法在处理不重复的slice时,在指定随机的slice数据测试中,sdk的quicksort性能比我这边提供的包性能稍逊一些,所以,在此贴出我的quicksort实现方式。不足之处,请各位指正与谅解。下边附上测试代码

func TestSysSort(t *tesTing.T) {
    fmt.Println("start system sort")
    curTime := time.Now().Unix()
    fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
    for i := 0; i < 10000000; i++ {
        var t []int = []int{11, 12, 545, 67456, 45, 7, 764, 465, 5423}
        a := sort.IntSlice(t[0:])
        sort.sort(a)
    }
    fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
    endTime := time.Now().Unix()
    fmt.Println("end system sort,costs time:",(endTime - curTimE))
}

func TestMySort(t *tesTing.T) {
    fmt.Println("start my sort")
    curTime := time.Now().Unix()
    fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
    for i := 0; i < 10000000; i++ {
        var t []int = []int{11, 5423}
        quicksort.QuickSort(t)
    }
    fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
    endTime := time.Now().Unix()
    fmt.Println("end my sort,(endTime - curTimE))
}

上述是测试代码,请自行测试,对比性能

大佬总结

以上是大佬教程为你收集整理的golang版本快速排序实现全部内容,希望文章能够帮你解决golang版本快速排序实现所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。