自定义排序数组:
public class MyOrderArray { private int[] arr; private int elements; public MyOrderArray(){ arr = new int[50]; } /* * 插入后的数组是有序的 */ public void insert(int value){ int i; for(i=0;i<elements;i++){ if(arr[i]>value){ break; } } for(int j=elements;j>i;j--){ arr[j] = arr[j-1]; } arr[i] = value; elements++; } /* * 二分法查找 */ public int binarySearch(int value){ int low = 0; int pow = elements; int middle = 0; while(true){ middle = (low+pow)/2; if(arr[middle] == value){ return middle; }else { if(arr[middle]>value){ pow = middle-1; }else{ low = middle +1; } } } } /* * 线性查找 */ public int linearSearch(int value){ int i; for(i=0;i<elements;i++){ if(arr[i]==value){ break; } } return i; } /* * 显示数组 */ public void display(){ System.out.print("["); for(int i=0;i<elements;i++){ System.out.print(arr[i]+" "); } System.out.print("]"); } }
测试片段:
public class TestMyOrderArray { public static void main(String[] args) { MyOrderArray myOrderArray = new MyOrderArray(); myOrderArray.insert(23); myOrderArray.insert(10); myOrderArray.insert(4); myOrderArray.insert(1); myOrderArray.insert(56); myOrderArray.insert(7); myOrderArray.insert(100); myOrderArray.insert(79); myOrderArray.display(); System.out.println(); System.out.println(myOrderArray.binarySearch(56)); } }
输出:
[1 4 7 10 23 56 79 100 ] 5
这就是2F查找.