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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姬光普 中级黑马   /  2015-5-17 23:57  /  594 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是我写的,感觉特别复杂,不太好
  1. package org.heima;

  2. public class Test9 {

  3.         /**
  4.          * 数组查询,折半查找,利用折半查找,将一个数字插入到数组中
  5.          */
  6.         public static void main(String[] args) {
  7.                 int[] a=new int[]{1,2,3,5,6,7,8,9};
  8.                 int[] b=new int[a.length+1];
  9.                
  10.                 int min=0,max=a.length-1;
  11.                 int mid=(max+min)/2;
  12.                
  13.                 int key=4;//要插入的值
  14.                 while(true){                       
  15.                                 if(a[mid]>key&&a[max]!=a[min]){
  16.                                         max=mid-1;
  17.                                         mid=(max+min)/2;
  18.                                         System.out.println(a[mid]);
  19.                                 }
  20.                                 else if(a[mid]<key&&a[max]!=a[min]){
  21.                                         min=mid+1;
  22.                                         mid=(max+min)/2;
  23.                                         System.out.println(a[mid]);
  24.                                 }
  25.                                 else{
  26.                                         for(int i=0;i<b.length-1;i++){
  27.                                                 if(i==mid){
  28.                                                         b[mid+1]=key;
  29.                                                         b[mid]=a[mid];
  30.                                                 }
  31.                                                 else if(i<mid)
  32.                                                         b[i]=a[i];
  33.                                                 else
  34.                                                         b[i+1]=a[i];
  35.                                         }
  36.                                         break;
  37.                                 }
  38.                                        
  39.                 }
  40.                 for(int i=0;i<b.length;i++)
  41.                         System.out.print(b[i]+"  ");
  42.                
  43.                
  44.                

  45.         }

  46. }
复制代码


0 个回复

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