java50题----30插入数组

来源:互联网 发布:室内温度检测软件 编辑:程序博客网 时间:2024/06/04 18:38
/*有一个已经排好序的数组。现输入一个数,要求按照原来的排序规则将它插入到数组中。*/import java.util.Arrays;class Demo{private Demo(){}private static Demo instance = new Demo();public static Demo getInstance(){return instance;}public int[] insertArr(int[] arr, int n){//int[] newarr = new int[arr.length+1];//偷懒的写法,只能处理升序数组/*int[] a = Arrays.copyOf(arr, arr.length+1);a[a.length-1] = n;Arrays.sort(a);return a;*///int ret = Arrays.binarySearch(arr, n);//二分法查找,找到n时返回插入点脚标;没找到n时就返回//-插入点脚标-1//判断ret的正负值来继续操作。//常规写法int[] newarr = new int[arr.length + 1];int index = 0;for(int i = 0; i < arr.length; i++){if(n <= arr[i])//从左向右升序冒泡{index = i;break;}}//循环将旧数组的值复制到新数组中for(int i = 0; i < index; i++){newarr[i] = arr[i];}newarr[index] = n;for(int i = index+1; i < newarr.length; i++){newarr[i] = arr[i-1];}return newarr;}}class MainClass {public static void main(String[] args) throws Exception{Demo d = Demo.getInstance();int[] arr = {100,200,300,400,500};int n = 900;System.out.println("插入前的数组元素:");for(int i = 0; i < arr.length; i++){System.out.print(arr[i]+"\t");}int[] newarr = d.insertArr(arr, n);System.out.println("\n插入后的数组元素:");for(int i = 0; i < newarr.length; i++){System.out.print(newarr[i]+"\t");}}}/**/

0 0