有序数组 2F查找

来源:互联网 发布:哈萨克软件下载大全 编辑:程序博客网 时间:2024/06/06 10:49

自定义排序数组:

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查找.

 

0 0