黑马程序员技术交流社区

标题: 从一个排列好的数中查找索引! [打印本页]

作者: 冯超    时间: 2013-5-4 13:00
标题: 从一个排列好的数中查找索引!
         有一个已经排好序的数组,现在输入一个数
问,现在要你编写一个函数,去得到这个数的索引
  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. }
复制代码

作者: 冯超    时间: 2013-5-4 13:01
··不知道还有没有什么更好的方法!
作者: 乘鱼飞    时间: 2013-5-4 13:17
  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

作者: 冯超    时间: 2013-5-4 14:28
乘鱼飞 发表于 2013-5-4 13:17
输出结果:
2
2  的索引位置是: 1

只想说 效率太慢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2