美文网首页
Go算法——基数排序

Go算法——基数排序

作者: ProgrammingGuy | 来源:发表于2020-02-13 20:39 被阅读0次
    package main
    
    import (
        "fmt"
    )
    
    func radixSort(array []int) {
        max := array[0]
        for i := 1; i < len(array); i++ {
            if array[i] > max {
                max = array[i]
            }
        }
        d := 1
        for max >= 10 {
            max /= 10
            d *= 10
        }
        for c := 1; c != d; c *= 10 {
            insertionSort(array, c)
        }
    }
    
    func insertionSort(array []int, d int) {
        for i := 1; i < len(array); i++ {
            key := array[i]
            j := i - 1
            for j >= 0 && array[j]/d < key/d {
                array[j+1] = array[j]
                j--
            }
            array[j+1] = key
        }
    }
    
    func main() {
        arr := []int{329, 457, 657, 839, 436, 720, 355}
        fmt.Println(arr)
        radixSort(arr)
        fmt.Println(arr)
    }
    
    image.png

    相关文章

      网友评论

          本文标题:Go算法——基数排序

          本文链接:https://www.haomeiwen.com/subject/jralfhtx.html