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

本文深入探讨了面试中常见的算法问题——如何合并两个有序数组,并重点解析了快速排序和归并排序这两种高效排序算法的实现原理和步骤。通过实例分析,帮助读者理解和掌握这两种排序方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 == rLen {
			tmp = append(tmp, lArr[i])
			i++
		}
		if i == lLen && j < rLen {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值