package main
import "fmt"
func main() {
arr := []int{2,1,4,3, 5, 6,7, 9}
quickSort(arr, 0, len(arr))
fmt.Println(mergeSort(arr, 0, len(arr)))
dealSortOrderArrs()
}
/**
合并两个有序数组
*/
func dealSortOrderArrs() {
arr1 := []int{1, 3, 5, 7}
arr2 := []int{100, 104, 106, 108}
fmt.Println(merge(arr1, arr2))
}
/**
归并排序
*/
func mergeSort(arr []int, l, r int) []int {
if len(arr) <= 1 {
return arr
}
mid := (l+r)/2
L := mergeSort(arr[:mid-l], l, mid)
R := mergeSort(arr[mid-l:], mid, r)
//合并两个有序数组
return merge(L, R)
}
/**
归并排序,合并两个有序数组
*/
func merge(lArr, rArr []int) []int {
tmp := make([]int, 0)
i := 0
lLen := len(lArr)
j := 0
rLen := len(rArr)
for true {
if i < lLen && j < rLen {
if lArr[i] < rArr[j] {
tmp = append(tmp, lArr[i])
i++
} else {
tmp = append(tmp, rArr[j])
j++
}
}
if i < lLen && j
面试算法篇-合并两个有序数组 (快速排序、归并排序)
最新推荐文章于 2021-05-20 22:25:07 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)