要求:
合并两个排序的整数数组A和B变成一个新的数组
示例:
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
代码:
1 package main 2 3 import "fmt" 4 5 /** 6 * 合并两个有序数组组成一个新的有序数组 7 */ 8 func main() { 9 var a = [4]int{1,2,3,4} 10 var b = [...]int{1,2,2,3,4,4,5,6}//此处用数组,也可以直接换成切片 11 var la = len(a) 12 var lb = len(b) 13 var res = make([]int, 0, la+lb) 14 var i,j int = 0, 0 15 16 //循环两个比较两个数组,较小元素放入新数组,下标加1,直到某一个下标等于数组长度时退出循环 17 for i<la && j<lb { 18 if a[i] > b[j] { 19 res = append(res, b[j]) 20 j++ 21 } else { 22 res = append(res, a[i]) 23 i++ 24 } 25 } 26 27 //此时较短数组已经全部放入新数组,较长数组还有部分剩余,最后将剩下的部分元素放入新数组 28 for i < la { 29 res = append(res, a[i]) 30 i++ 31 } 32 for j < lb { 33 res = append(res, b[j]) 34 j++ 35 } 36 fmt.Println("排序后的新序列为 ", res) 37 }