面试算法篇-合并两个有序数组 (快速排序、归并排序)

package mainimport "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.
摘要由CSDN通过智能技术生成
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 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值