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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯超 高级黑马   /  2013-5-4 13:00  /  1690 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

         有一个已经排好序的数组,现在输入一个数
问,现在要你编写一个函数,去得到这个数的索引
  1. package interview;

  2. public class test1 {

  3.         /**
  4.          * @param args
  5.          *      有一个已经排好序的数组,现在输入一个数
  6. *    * 问,现在要你编写一个函数,去得到这个数的索引
  7.          */
  8.         public static void main(String[] args) {
  9.                 // TODO Auto-generated method stub
  10.                 int arr[] = new int[] {1,2,3,4,5,6,7,8,20};
  11.                
  12.                 int index = getIndex(0, arr, 5, 2);
  13.                 System.out.println(index);
  14.         }
  15.         public static int getIndex(int startIndex, int a[], int lastIndex, int data) {
  16.                 int index = -1;
  17.                 //判断输入的数字是否合法
  18.                 if(startIndex - lastIndex >= 0)
  19.                         return -1;
  20.                 if(data < a[startIndex] || data > a[lastIndex])
  21.                         return -1;
  22.                 //以下是查找索引的方法
  23.                 int fist = startIndex;
  24.                 int last = lastIndex;
  25.                 int mid = (fist + last) / 2;
  26.                 while(fist <= last) {
  27.                         if(data == a[mid])
  28.                                 return mid;
  29.                         if(data > a[mid])
  30.                                 fist = mid + 1;
  31.                         if(data < a[mid])
  32.                                 last = mid - 1;
  33.                        
  34.                         mid = (fist + last) / 2;
  35.                 }
  36.                 return index;
  37.         }

  38. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

3 个回复

倒序浏览
··不知道还有没有什么更好的方法!
回复 使用道具 举报
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                  int arr[] = new int[] {1,2,3,4,5,6,7,8,20};
  4.                  Scanner sc=new Scanner(System.in);    //键盘录入
  5.                  int n=sc.nextInt();
  6.                  
  7.                  int index= searchBotey(arr,n);//自定searchBotey()方法求索引
  8.                  
  9.                 System.out.println(n+"  的索引位置是: "+index);
  10.         }
  11.         public static int searchBotey(int[] arr,int index)
  12.         {
  13.                 int num=-1;
  14.                 for(int i=0;i<arr.length;i++)
  15.                 {
  16.                         if(index==arr[i])
  17.                                 num=i;
  18.                 }
  19.                 return num;
  20.         }
  21. }
复制代码
输出结果:
2
2  的索引位置是: 1

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
乘鱼飞 发表于 2013-5-4 13:17
输出结果:
2
2  的索引位置是: 1

只想说 效率太慢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马