1.排序数组并二分查找某个元素,返回下标
public static int fun(int[] array,int value) {
int min = 0,max = array.length - 1,mid = (min + max) / 2;
while(array[mid] != value) {
if(array[mid] < value) {
min = mid + 1;
}else if (array[mid] > value){
max = mid - 1;
}
mid = (min + max) / 2;
if(min > max) {
return -1;
}
}
return mid;
}
public static void main(String[] args) {
int[] array = {
10,22,34,4,5,93,66,18,42,57};
Arrays.sort(array);
System.out.println(Arrays.toString(array));
System.out.print("输入想要查找的元素:");
Scanner scanner = new Scanner(System.in);
int val = scanner.nextInt();
int i = fun(array,val);
System.out.println("该元素下标为:"+i);
}
2.排序数组并插入某个元素
public static int[] fun2(int[] array,int value){
int[] array2 = new int[array.length+1];
int index = array.length;
for(int i = 0; i < array.length; i++){
if(value < array[i]){
index = i;
break;
}
}
for(int j = array.length; j >= 0; j--){
if(j > index) {
array2[j] = array[j - 1];
}
if(j == index){
array2[index] = value;
}
if(j < index){
array2[j] = array[j];
}
}
System.out.println("插入元素的下标是:" + index);
return array2;
}
public static void main(String[] args) {
int[] array = new int[]{
10,22,34