AI智能
改变未来

快速排序-golang

/// 快速排序func Sort(a []int, lo, hi int) {if hi <= lo {return}j := Partion(a, lo, hi)Sort(a, lo, j-1 )Sort(a, j+1, hi)}func Partion(a []int, lo, hi int) int {v := a[lo]i := loj := hi//array := []int{7,1,100, 88,3,2,8,9,4,5,6}for {for i++ ;Less(a[i], v); i++ {if i == hi { break }}for ;Less(v, a[j]); j-- {if j == lo { break }}if i > j { break }Exchange(a, i, j)}ReInsert(a, lo, j)fmt.Println(a, i, j)return j}func Less(i, j int) bool {return i < j}func Exchange(a []int, i, j int) {item := a[j]a[j] = a[i]a[i] = item}// i < j 把 i 插入都 j 的 位置func ReInsert(a []int, i, j int) {x := iitem := a[i]for ; x<j; x++ {a[x] = a[x+1]}a[j] = item}//// 查找 a[0] 应该在的位置,并把比 a[0] 小的放在//func FindRealIndex(a []int, index int) int {////}/// 插入排序// j 插入 i 的位置func Insert(a []int, i, j int) {if j < i {return}item := a[j]for x := j; x > i; x-- {a[x] = a[x-1]}a[i] = item}// 查找最高 hight 应该在的位置func FindIndex(a []int, hight int) int {index := hightfor i := 0; i < hight; i++ {if a[i] < a[hight] {continue} else {index = ibreak}}return index}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 快速排序-golang