Go算法——计数排序

package main

import (
    "fmt"
)

func countingSort(array []int, k int) {
    b, t := make([]int, len(array)), make([]int, k)
    for i := 0; i < len(array); i++ {
        t[array[i]]++
    }
    for i := 1; i < k; i++ {
        t[i] += t[i-1]
    }
    for j := len(array) - 1; j >= 0; j-- {
        b[t[array[j]]-1] = array[j]
        t[array[j]]--
    }
    for i := 0; i < len(array); i++ {
        array[i] = b[i]
    }
}

func main() {
    arr := []int{16, 4, 10, 14, 7, 9, 3, 2, 8, 1}
    fmt.Println(arr)
    countingSort(arr, 17)
    fmt.Println(arr)
}
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容