有一个已经排好的数组。输入一个数,要求按原来的规律将它插入数组中。用Java语言写程序
时间: 2024-10-10 11:10:18 浏览: 29
有一个已排好序的数组,今输入一个数,要求按排序的规律将它插入数组中。
在Java中,你可以使用二分查找法(Binary Search)的思想来解决这个问题。首先,你需要遍历已排序的数组找到合适的位置插入新元素。如果数组是递增的,那么插入位置应该满足以下条件:
1. 如果新数小于数组的第一个元素,插入索引为0;
2. 如果新数大于等于数组最后一个元素,插入索引为数组长度;
3. 否则,通过比较新数和中间元素,如果新数小于中间元素,插入左半部分的中间索引;否则插入右半部分的中间索引。
以下是一个简单的示例代码:
```java
public class InsertionInSortedArray {
public int insert(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return 0;
}
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2; // 中间位置
if (nums[mid] >= target) { // 新数应插入左边
right = mid - 1;
} else { // 新数应插入右边
left = mid + 1;
}
}
// 插入目标值
System.arraycopy(nums, left, nums, left + 1, right - left + 1);
nums[left] = target;
return left + 1;
}
public static void main(String[] args) {
InsertionInSortedArray ins = new InsertionInSortedArray();
int[] nums = {1, 3, 5, 6};
int target = 4;
System.out.println("插入后的数组: " + Arrays.toString(ins.insert(nums, target)));
}
}
```
这个程序会在保持数组有序的前提下,将给定的目标数插入到适当的位置。
阅读全文