有一个已经排好序的数组,现在输入一个数
问,现在要你编写一个函数,去得到这个数的索引:- package interview;
- public class test1 {
- /**
- * @param args
- * 有一个已经排好序的数组,现在输入一个数
- * * 问,现在要你编写一个函数,去得到这个数的索引
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int arr[] = new int[] {1,2,3,4,5,6,7,8,20};
-
- int index = getIndex(0, arr, 5, 2);
- System.out.println(index);
- }
- public static int getIndex(int startIndex, int a[], int lastIndex, int data) {
- int index = -1;
- //判断输入的数字是否合法
- if(startIndex - lastIndex >= 0)
- return -1;
- if(data < a[startIndex] || data > a[lastIndex])
- return -1;
- //以下是查找索引的方法
- int fist = startIndex;
- int last = lastIndex;
- int mid = (fist + last) / 2;
- while(fist <= last) {
- if(data == a[mid])
- return mid;
- if(data > a[mid])
- fist = mid + 1;
- if(data < a[mid])
- last = mid - 1;
-
- mid = (fist + last) / 2;
- }
- return index;
- }
- }
复制代码 |