【Golang】已知有个排序好(升序)的数组,要求插入一个元素,最后打印该数组,顺序依然是升序

  一丶题目要求

    已知有个排序好(升序)的数组,要求插入一个元素,最后打印该数组,顺序依然是升序

   二丶代码

    

package main

import (
	"fmt"
)

//已知有个排序好(升序)的数组,要求插入一个元素,最后打印该数组,顺序依然是升序

//append方法
func insertArr(arr [10]int , num int)[]int{
	//创建index变量记录num插入的下标值,初始值为-1,如果没有值比num大的话,直接插入最后面
	index := -1
	var splicearr  = []int{}
	for j := 0 ; j < 10 ; j++{
		if arr[j] > num {
			index = j
			break
		}
	}
	//index == -1 就是num是数组里面最大,直接追加
	if index == -1{
		splicearr = append(arr[:], num)
	}else{
		//先插入数组比num小的部分
		splicearr = append(splicearr, arr[:index]...)
		//插入num
		splicearr = append(splicearr, num)
		//插入数组比num大的部分
		splicearr = append(splicearr, arr[index:]...)
	}
	return splicearr
}
//copy方法
func copyArr(arr [10]int, num int)[]int{
	index := -1
	var num1 = []int{num}
	var splicearr = make([]int, len(arr)+1)
	for j := 0 ; j < 10 ; j++{
		if arr[j] > num {
			index = j
			break
		}
	}
	if(index == -1){
		copy(splicearr,num1)
		copy(splicearr[1:],arr[:])
	}else{
		copy(splicearr[0:index], arr[0:index])
		copy(splicearr[index:index+1],num1)
		copy(splicearr[index+1:],arr[index:])
	}
	return splicearr
}
func main(){
	arr := [10]int{1,4,7,9,12,23,34,56,67,99}
	fmt.Println("zheshi:",insertArr(arr, 5))
	fmt.Println("zheshi2:",copyArr(arr, 5))
}

  

上一篇:二分法(在有序数组里,是否存在某个数)


下一篇:codeforces1567B