将一个正整数插入到已经排好序的数组中(折半查找)

mac2025-08-31  8

import java.util.Scanner; class Demo_11 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr = {1,3,9,34,38,40,89,100,111,222,789}; //创建一个新数组长度+1来存放新增数字 int[] arr1 = new int[arr.length+1]; //输入要增加的数字 System.out.println("请输入要增加的数字:"); int num = sc.nextInt(); //记录位置 int min = 0; int max = arr.length-1; int mid = (min+max)/2; while(min<=max){ if(num >= arr[mid]){ min = mid+1; mid = (min+max)/2; }else if(num<arr[mid]){ max = mid-1; mid = (min+max)/2; } } //当min>max时,就意味着要插入的数字在二者指向的对象之间 //在max之后min之前 //将数组放到新数组中 for(int i = 0;i<min;i++){ arr1[i] = arr[i]; } arr1[min] = num; for(int i = min;i<arr.length;i++){ arr1[i+1] = arr[i]; } //打印插入后的数组 for(int i = 0;i<arr1.length;i++){ System.out.print(arr1[i]+" "); } } }

 

最新回复(0)