删除数组元素后排序!
 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 }

 

posted on 2017-02-23 23:19  IT_xiaocai  阅读(377)  评论(0)    收藏  举报