排序算法
2021-01-07 00:29
阅读:668
标签:i++ str 排序 sele return shel break turn port
package main import ( "fmt" "strconv" ) func main() { arr := []int{12, 34, 651, 3, 65, 1, 4} fmt.Println(arr) // 冒泡排序 // value := bubble_sort(arr) // 选择排序 // value := selection_sort(arr) // 插入排序 // value := insertion_sort(arr) // 快速排序 // value := quick_sort(arr) // 归并排序 // value := merge_sort(arr) // 希尔排序 // value := shell_sort(arr) // 计数排序 // value := count_sort(arr) // 桶排序 // 基数排序 value := radix_sort(arr) fmt.Println(value) } // 冒泡排序 func bubble_sort(arr []int) []int { len := len(arr) for i := 0; i arr[j+1] { arr[j], arr[j+1] = arr[j+1], arr[j] } } } return arr } // 选择排序 func selection_sort(arr []int) []int { len := len(arr) for i := 0; i arr[j] { arr[i], arr[j] = arr[j], arr[i] } } } return arr } // 插入排序 func insertion_sort(arr []int) []int { len := len(arr) // fmt.Println(len) for i := 1; i = arr[j] { break } arr[j+1] = arr[j] j = j - 1 if j 0 && len(right) > 0 { if left[0] > right[0] { res = append(res, right[0]) right = right[1:] } else { res = append(res, left[0]) left = left[1:] } } for len(left) > 0 { res = append(res, left[0]) left = left[1:] } for len(right) > 0 { res = append(res, right[0]) right = right[1:] } return res } // 希尔排序 func shell_sort(arr []int) []int { len := len(arr) f := 3 h := 1 for h = 1 { // fmt.Println("h = ", h) for i := h; i = h; j -= h { // fmt.Println("j = ", j) if arr[j] max { max = arr[i] } } res := make([]int, max+1) // fmt.Println(res) for _, v := range arr { res[v] = res[v] + 1 } NewArr := make([]int, 0) for k, v := range res { for i := 0; i i { k := strV[lenV-i-1 : lenV-i] key, _ := strconv.Atoi(k) kl[key] = append(kl[key], v) } else { kl[0] = append(kl[0], v) } } // fmt.Println(kl) arr = arr[0:0] for k, v := range kl { arr = append(arr, v...) kl[k] = kl[k][0:0] } } return arr }
排序算法
标签:i++ str 排序 sele return shel break turn port
原文地址:https://www.cnblogs.com/NjY2/p/12972883.html
上一篇:Java中方法的重载与重写
评论
亲,登录后才可以留言!