首页 > 试题广场 >

合并数组

[编程题]合并数组
  • 热度指数:15776 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
请实现一个函数,功能为合并两个升序数组为一个升序数组

输入的格式是用逗号隔开的数字。

数据范围:输入的字符串长度满足

输入描述:
输入有多个测试用例,每个测试用例有1-2行,每行都是以英文逗号分隔从小到大排列的数字


输出描述:
输出一行以英文逗号分隔从小到大排列的数组
示例1

输入

1,5,7,9
2,3,4,6,8,10

输出

1,2,3,4,5,6,7,8,9,10

备注:
不允许使用原生的 sort、concat 等函数
package main

import (
    "fmt"
    "os"
    "bufio"
    "strings"
    "strconv"
)

var in=bufio.NewReader(os.Stdin)

func main() {
    s1,_:=in.ReadString('\n')
    s2,ok:=in.ReadString('\n')
    if ok!=nil{
        fmt.Print(s1[:len(s1)-1])
        return
    }
    s1=s1[:len(s1)-1]
    s2=s2[:len(s2)-1]
    arr1:=strings.Split(s1,",")
    arr2:=strings.Split(s2,",")
    arr:=[]int{}
    for _,s:=range append(arr1,arr2...){
        x,_:=strconv.Atoi(s)
        arr=append(arr,x)
    }
    for i:=0;i<len(arr);i++{
        min:=i
        for j:=i+1;j<len(arr);j++{
            if arr[j]<arr[min]{
                min=j
            }
        }
        if min!=i{
            arr[min],arr[i]=arr[i],arr[min]
        }
    }
    for i,x:=range arr{
        fmt.Printf("%v",x)
        if i<len(arr)-1{
            fmt.Print(",")
        }
    }
}

发表于 2023-03-22 17:11:03 回复(0)