用Java编写程序,采用二分法将一个数插入到有序的数值中,并输出结果。 已知数组元素{10,11,12,15,16,18,20,30,35,40},将要插入的数为25.
时间: 2023-09-30 16:03:40 浏览: 85
```java
public class BinarySearchDemo {
public static void main(String[] args) {
int[] arr = {10, 11, 12, 15, 16, 18, 20, 30, 35, 40};
int insertValue = 25;
int insertIndex = binarySearch(arr, insertValue, 0, arr.length - 1);
int[] result = insert(arr, insertIndex, insertValue);
for (int num : result) {
System.out.print(num + " ");
}
}
/**
* 二分查找,返回要插入的位置
*
* @param arr 数组
* @param insertValue 要插入的值
* @param left 左边界
* @param right 右边界
* @return 要插入的位置
*/
public static int binarySearch(int[] arr, int insertValue, int left, int right) {
if (left > right) {
return left;
}
int mid = (left + right) / 2;
if (insertValue < arr[mid]) {
return binarySearch(arr, insertValue, left, mid - 1);
} else if (insertValue > arr[mid]) {
return binarySearch(arr, insertValue, mid + 1, right);
} else {
return mid;
}
}
/**
* 插入元素
*
* @param arr 数组
* @param insertIndex 要插入的位置
* @param insertValue 要插入的值
* @return 插入后的数组
*/
public static int[] insert(int[] arr, int insertIndex, int insertValue) {
int[] result = new int[arr.length + 1];
for (int i = 0; i < insertIndex; i++) {
result[i] = arr[i];
}
result[insertIndex] = insertValue;
for (int i = insertIndex + 1; i < result.length; i++) {
result[i] = arr[i - 1];
}
return result;
}
}
```
输出结果:
```
10 11 12 15 16 18 20 25 30 35 40
```
阅读全文