Java 有nn=100个整数已经按照从小到大顺序排列好现在另外给一个整数x请将改数插入到序列中并使新的排序仍然有序
思路:
可以使用二分查找的方法找到新数应该插入的位置,然后将其插入到该位置。具体步骤如下:
-
使用二分查找方法找到新数应该插入的位置,可以使用递归或者循环的方式实现。
-
找到位置之后,将该位置及其之后的所有数向后移动一位,空出该位置。
-
将新数插入到该位置。
-
输出插入后的序列。
代码实现:
以下是使用循环的方式实现二分查找和插入的代码,其中nums为原序列,n为原序列的长度,x为待插入的数:
int left = 0, right = n - 1;
int mid;
while (left <= right) {
mid = (left + right) / 2;
if (nums[mid] == x) {
break;
} else if (nums[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
if (nums[mid] < x) {
mid++;
}
for (int i = n - 1; i >= mid; i--) {
nums[i + 1] = nums[i];
}
nums[mid] = x;
for (int i = 0; i <= n; i++) {
System.out.print(nums[i] + " ");
}
使用递归的方式实现二分查找和插入的代码类似,可以自行尝试实现。
原文地址: https://www.cveoy.top/t/topic/bhQY 著作权归作者所有。请勿转载和采集!