go 排序算法

2021-03-17 21:24

阅读:597

标签:大于等于   一个   算法   数组   fun   处理   func   插入   位置   

1. 插入排序

// 排序函数

func sortarr(arr *[]int) *[]int {

for i := 1; i =0&&(*arr)[index] > maxindex{  // index大于等于0,如果数组中有比maxindex值大的做下面处理
        (*arr)[index+1] = (*arr)[index]  // 复制一个(*arr)[index]到(*arr)[index+1]占位
        index-- // 移动index比对下一个
    }
    if index +1 != i{ // 如果 index +1不等于i时,说明最大值位置有变化,重新把最大值赋值给(*arr)[index+1]
        (*arr)[index+1] = maxindex
    }
}
return arr

}

func main() {
arr := []int{10,1,3,6,4,2,100,30,5,80,8,7}
a := sortarr(&arr)
fmt.Println(a)
}

2. 顺序排序

func sortarr(arr []int) []int {

for j := 0;j maxindex{
            index = n
            maxindex = (*arr)[n]
        }
    }
    (*arr)[j],(*arr)[index] = (*arr)[index],(*arr)[j]
}
return arr

}

func main() {
arr := []int{10,1,3,6,4,2,100,30,5,80,8,7}
a := sortarr(&arr)
fmt.Println(*a)

}

3. 快速排序

func sortarr(left int,right int,arr []int) []int {

l := left
r := right
p := (*arr)[(l+r)/2]
for l  p {
        l++
    }
    for (*arr)[r] = r{
        break
    }
    (*arr)[l],(*arr)[r] = (*arr)[r],(*arr)[l]
    if (*arr)[l] == p{
        r--
    }
    if (*arr)[r] == p{
        l++
    }
}
if l == r{
    r--
    l++
}
if left  l{
    sortarr(l, right, arr)
}
return arr

}

func main() {
arr := []int{10,1,3,6,4,2,100,30,5,80,8,7}
a := sortarr(0,len(arr)-1,&arr)
fmt.Println(a)
}

go 排序算法

标签:大于等于   一个   算法   数组   fun   处理   func   插入   位置   

原文地址:https://blog.51cto.com/qingfeng00/2549820


评论


亲,登录后才可以留言!