1 /*2、删除数组元素 2 功能描述:有一个有序整数数组,要求输入一个数字,在数组中查找是否有这个数,如果有,将 该数从数组中删除, 3 要求删除后的数组仍然保持有序;如果没有,则显示“数组中没有这个数! ” 4 例如:原数组为:4,8,16,20,44,55 输入 16,删除后的数组变为:4,8,20,44,55,-1 5 */ 6 import java.util.Arrays; 7 import java.util.Random; 8 import java.util.Scanner; 9 10 public class Array { 11 public static void main(String[] args) { 12 int[] arr = new int[10] ; 13 randomAccessArray(arr,10);//调用自动生成有序数组的方法 14 //输入一个数 15 Scanner scan = new Scanner(System.in); 16 System.out.print("请输入一个0~100以内的整数: "); 17 int search = scan.nextInt(); 18 int index =binarySearchArray(arr, search); 19 deletArraySearch(arr, index); 20 21 } 22 public static void randomAccessArray(int[] arr ,int length){ 23 Random random = new Random(); 24 for(int i = 0 ;i< arr.length;i++){ 25 int nums = random.nextInt(100); 26 arr[i]=nums; 27 } 28 Arrays.sort(arr); 29 System.out.println("随机生成的有序数组为:"+Arrays.toString(arr)); 30 31 } 32 //删除数组中的search元素,并重新输出数组。 33 public static void deletArraySearch(int[] arr ,int index){ 34 int i= index; 35 try{ 36 for (;i<arr.length-1;i++ ){ 37 arr[index]=arr[index+1]; 38 } 39 arr[arr.length-1] = -1;}catch (Exception e){ 40 System.out.println("catch "); 41 } 42 System.out.println("删除后的数组为: "+Arrays.toString(arr)); 43 } 44 public static int binarySearchArray(int[] arr ,int search){ 45 int startIndex =0,endIndex=arr.length; 46 while(startIndex <= endIndex){ 47 int midIndex = (startIndex+endIndex)/2; 48 int mid = arr[midIndex]; 49 if (search > mid){ 50 startIndex = midIndex +1; 51 }else if (search < mid ){ 52 endIndex = midIndex -1; 53 }else{ 54 System.out.println("您要找的值"+search+"在数数列的下表为: "+ midIndex); 55 return midIndex; 56 } 57 if (startIndex > endIndex){ 58 System.out.println("您要查找的数不在数列中!"); 59 } 60 } 61 return -1; 62 } 63 64 }
浙公网安备 33010602011771号