需求:先将一数组排序,再将一个数插入到该指定数组,要求插入完成后得到的新数组必须是顺序排列的。
我写的代码如下:
import java.util.*;
class Test01{
public static int getIndex(int[] arr,int key){
int max=arr.length-1,min=0,mid;
while(min<=max){
mid = (max+min)>>1;
if(key>arr[mid]){
min = mid+1;
}else if(key<arr[mid]){
max = mid-1;
}else{
return mid;
}
}
return min;
}
public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
public static int[] newArray(int[] arr,int x,int key){
int[] newarr = new int[arr.length+1];
for(int i=0;i<arr.length;i++){
if(i>=0 && i<x){
newarr[i] = arr[i];
}else if(i==x){
newarr[x] = key;
}else{
newarr[i+1] = arr[i];
}
}
return newarr;
}
public static void main(String[] args){
int[] arr = {5,4,8,5,2,9,1,2,13,17,7,6,0};
System.out.println("请输入一个数字:");
Scanner input = new Scanner(System.in);
int a = input.nextInt();
java.util.Arrays.sort(arr);
print(arr);
System.out.println();
print(newArray(arr,getIndex(arr,a),a));
System.out.println("\n"+getIndex(arr,a));
}
}
基本是仿照毕老师写的,可是结果是插入的位置正确,就是插入的这个数总是0,求指导
|
|