排序算法三个(by go)

来源:互联网 发布:python flask下载 编辑:程序博客网 时间:2024/05/30 04:30

bubble:大数据量,慢

package sortfunc BubbleSortByte(c []byte) {length := len(c)sorted := true//optimization2for i := 0; i < length && sorted; i++ {sorted = falsefor j := 0; j < length-i-1; j++ {if c[j] > c[j+1] {tmp := c[j]c[j] = c[j+1]c[j+1] = tmpsorted = true}}}}func BubbleSortInt(c []int) {length := len(c)sorted := true//optimization2for i := 0; i < length && sorted; i++ {sorted = falsefor j := 0; j < length-i-1; j++ {if c[j] > c[j+1] {tmp := c[j]c[j] = c[j+1]c[j+1] = tmpsorted = true}}}}

bucket:大数据量,快

package sortfunc BucketSortByte(a []byte) {length := len(a)max := maxByte(a)buckets := make([]int, max+1)//fmt.Println("max =",max)//for i := 0; i < max; i++ {//buckets[i] = 0//}for i := 0; i < length; i++ {//fmt.Println("a[",i,"] =",a[i])buckets[a[i]]++}k := 0for i := 0; i < max+1; i++ {for j := 0; j < buckets[i] && k < length; j++ {a[k] = byte(i)k++}}}func BucketSortInt(a []int) {length := len(a)max := maxInt(a)buckets := make([]int, max+1)//fmt.Println("max =",max)//for i := 0; i < max; i++ {//buckets[i] = 0//}for i := 0; i < length; i++ {//fmt.Println("a[",i,"] =",a[i])buckets[a[i]]++}k := 0for i := 0; i < max+1; i++ {for j := 0; j < buckets[i] && k < length; j++ {a[k] = ik++}}}func maxByte(a []byte) int {ret := byte(0)for _,v := range a {if v > ret {ret = v}}return int(ret)}func maxInt(a []int) int {ret := 0for _,v := range a {if v > ret {ret = v}}return ret}
quick:大数据量,快

package sortfunc QuickSortInt(data []int, left int, right int) {if left < right {key := data[left]low := lefthigh := rightfor low < high {for low < high && data[high] > key {high--}if low < high {data[low] = data[high]low++}for low < high && data[low] < key {low++}if low < high {data[high] = data[low]high--}}data[low] = keyQuickSortInt(data, left, low-1)QuickSortInt(data, low+1, right)}}








0 0
原创粉丝点击