自定义排序数组:
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查找.