一丶题目要求
已知有个排序好(升序)的数组,要求插入一个元素,最后打印该数组,顺序依然是升序
二丶代码
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)) }