go算法实现

1.简易的桶排序

package main

import (
    "fmt"
)

func main(){
    sortdata := []int{5,54,3,9,47,3,6,0,5,3,11,10,68,3}
    contain := make([]int,100)
    for _,i := range sortdata{
        contain[i]++
    }
    for k,sdata := range contain{
        if sdata > 0{
            for t:=0;t<sdata;t++{
                fmt.Println(k)
            }
        }
    }
}

2.冒泡排序

package main

import (
    "fmt"
)

func main(){
    sortdata := []int{5,54,3,9,47,3,6,0,5,3,11,10,68,3}
    for j:=0;j<len(sortdata);j++ {
        for i := 0; i < len(sortdata)-1; i++ {
            if sortdata[i] < sortdata[i+1] {
                sortdata[i], sortdata[i+1] = sortdata[i+1], sortdata[i]
            }
        }
    }
    fmt.Println(sortdata)
}

3.求整数二进制表示中1的个数

package main

import (
    "fmt"
)



func main()  {
    s := 139
    fmt.Printf("%08b\n",s)
    fmt.Println(GetOneNum(s))
    fmt.Println(CalcOneNum(s))
}

func GetOneNum(a int) int  {
    num := 0
    for {
        if a == 0 {
            break
        } else {
            a = a & (a - 1)
            num++
        }
    }
    return num
}

func CalcOneNum(a int) int {
    a = ((a & 0xAAAA) >> 1) + (a & 0x5555)
    a = ((a & 0xCCCC) >> 2) + (a & 0x3333)
    a = ((a & 0xF0F0) >> 4) + (a & 0x0F0F)
    a = ((a & 0xFF00) >> 8) + (a & 0x00FF)
    return a
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容