首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

写一个java程序,用二分法把6插入到数组[1,2,5,7,8,9,13]

发布网友 发布时间:2022-04-26 14:10

我来回答

2个回答

热心网友 时间:2022-06-28 22:33

public static void insertSort(int[] data, int num) {
int left, right;
int middle, j;
// 准备
left = 0;
right = data.length - 2;
// 二分法查找插入位置
while (right >= left) {
// 指向已排序好的中间位置
middle = (left + right) / 2;
if (num < data[middle])
right = middle - 1;// 插入的元素在右区间
else
left = middle + 1; // 插入的元素在左区间
}
// 后移排序码大于R[i]的记录
for (j = data.length - 2; j >= left; j--) {
data[j + 1] = data[j];
}
// 插入
data[left] = num;

}

public static void main(String[] args) {
int[] data1 = { 1, 2, 5, 7, 8, 9, 13, 0 };// 预留一位给需要排序插入的使用
//insertSort(data1, 0);
insertSort(data1, 6);
//insertSort(data1, 14);
for (int i = 0; i < data1.length; i++) {
System.out.println(data1[i]);
}

}

热心网友 时间:2022-06-28 22:33

public class Test1 {

public static void main(String[] args) {

int[] a={1,3,4,5,6,8,10};
insert(a,2,0,a.length-1);

}

public static void insert(int[] a,int b,int start,int end){
int mid =(start+end)/2;
if(a[start]==b){
System.out.println("已存在位置:"+(start+1));
}else if(a[end]==b){
System.out.println("已存在位置:"+(end+1));
}else{
if(b==a[mid]){
System.out.println("已存在 位置:"+(mid+1));
}else if(b<a[mid]){
if(b>a[mid-1]){
System.out.println("应插入的位置是:"+(mid+1));
//插入方法调用

}else{
end=mid;
insert(a,b,start,end);
}

}else if(b>a[mid]){
if(b<a[mid+1]){
System.out.println("应插入的位置是:"+(mid+2));
//插入方法调用

}else{
start=mid;
insert(a,b,start,end);
}

}

}

}

}
--------------- 以上是代码 插入的方法自己写一下,在需要插入的地方调用一下, 插入的思路:遍历数组,把插入位置之后的数组向后移动一位。
不懂的再问我..

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com