A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 franksight 于 2015-2-20 23:19 编辑

用折半查找法查找数组中的元素,并在相应的位置插入该元素

  1. package exams;

  2. public class exams1 {

  3.         /**
  4.          * @param args
  5.          */
  6.                
  7.         public static void main(String[] args) {
  8.                  int[] arr={1,3,5,7,8,9};
  9.                  int[] arr2=new int[arr.length+1]; //定义新数组,用于存储插入元素后的数据
  10.                         int index=halfSearch(arr,8);
  11.                         set(arr,arr2,8,index);
  12.                         print(arr);
  13.                         print(arr2);

  14.                 }

  15.         //插入新数据
  16.         public static void set(int[] arr,int[] arr2,int key,int index)
  17.         {
  18.                 for(int i=0;i<index;i++)
  19.                         arr2[i]=arr[i];        
  20.                 arr2[index]=key;        
  21.                 for(int i=index+1;i<arr2.length;i++)
  22.                         arr2[i]=arr[i-1];
  23.         }
  24.         //二分查找查找位置
  25.         public static int halfSearch(int[] arr,int key)
  26.         {
  27.                 int min=0,max=arr.length ;
  28.                 int mid=(min+max)/2;
  29.                 while(key!=arr[mid])
  30.                 {
  31.                         if(key>arr[mid])
  32.                                 min=mid+1;
  33.                         else if(key<arr[mid])
  34.                                 max=mid-1;        
  35.                         if(min>max)
  36.                                 return min;
  37.                         mid=(min+max)/2;
  38.                 }
  39.                 return mid;        
  40.         }
  41.         //负责打印数组
  42.         public static void print(int[] arr)
  43.         {
  44.                 for(int x=0;x<arr.length;x++)
  45.                         System.out.print(arr[x]+" ");        
  46.                 System.out.println();
  47.         }
  48. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很不错,加油

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马