数组类
package com.company; public class MyNewArray { private long[] arr; private int elements; MyNewArray() { arr = new long[50]; } MyNewArray(int size) { arr = new long[size]; } /** * 插入值 * * @param value */ public void insert(long 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 void display() { System.out.print(" [ "); for (int i = 0; i < elements; i++) { System.out.print(arr[i] + " "); } System.out.print(" ] "); System.out.println(); } /** * 根据值查找下标 * @param vlaue * @return */ public int sreah(long vlaue) { int i; for (i = 0; i < elements; i++) { if (vlaue == arr[i]) { break; } } if (i == elements) { return -1; } else { return i; } } /** * 二分法查找 * @param value * @return */ public int binarySearch(long value) { int low = 0; int middle = 0; int pow = elements; while (true) { middle = (low + pow) / 2; if (arr[middle] == value) { return middle; }else if (low > pow) { return -1; }else { if (arr[middle] > value) { pow = middle-1; }else { low = middle+1; } } } } /** * 根据下标获取值 * @param index * @return */ public long get(int index) { if (index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { return arr[index]; } } /** * 删除元素 * @param index */ public void delete(int index) { if (index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { for (int i = index; i < elements; i++) { arr[i] = arr[i + 1]; } elements--; } } }
测试类
package com.company; public class Main { public static void main(String[] args) { // write your code here /*MyArray array = new MyArray(); array.insert(12); array.insert(30); array.insert(62); array.display(); System.out.println("array = " + array.sreah(12)); System.out.println("array = " + array.get(2)); array.delete(1); array.display();*/ MyNewArray array = new MyNewArray(); array.insert(16); array.insert(1); array.insert(10); array.insert(19); array.display(); System.out.println( array.binarySearch(19)); } }
结果: