本文共 3691 字,大约阅读时间需要 12 分钟。
package cn.mydata;public class MyArray { private int[] arr; //表示有效数据的长度 private int elements; public MyArray() { arr = new int[50]; } public MyArray(int maxsize) { arr = new int[maxsize]; } /** * 添加数据 */ public void insert(int value) { arr[elements] = value; elements++; } /** * 显示数据 */ public void display() { System.out.print("["); for (int i = 0; i < elements; i++) { System.out.print(arr[i] + " "); } System.out.print("]"); } /** * 查找数据 */ public int search(int value) { int i; for (i = 0; i < elements; i++) { if (value == arr[i]) { break; } } if (i == elements) { return -1; }else { return i; } } /** * 查找数据,根据索引来查 */ public int get(int index) { if (index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else { return arr[index]; } } /** * 删除数据 */ public void delete(int index) { if (index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else { for (int i = index; i < elements; i++) { arr[index] = arr[index + 1]; } elements--; } } /** * 更新数据 */ public void change(int index,int newvalue) { if (index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else { arr[index] = newvalue; } }}
package cn.mydata;public class MyOrderArray { private int[] arr; //表示有效数据的长度 private int elements; public MyOrderArray() { arr = new int[50]; } public MyOrderArray(int maxsize) { arr = new int[maxsize]; } /** * 添加数据 */ 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 void display() { System.out.print("["); for (int i = 0; i < elements; i++) { System.out.print(arr[i] + " "); } System.out.print("]"); } /** * 查找数据 */ public int search(int value) { int i; for (i = 0; i < elements; i++) { if (value == arr[i]) { break; } } if (i == elements) { return -1; }else { return i; } } /** * 二分法查找数据 */ public int binarySearch(int value) { int middle = 0; int low = 0; int pow = elements; while (true) { middle = (pow + low) / 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; } } } } /** * 查找数据,根据索引来查 */ public int get(int index) { if (index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else { return arr[index]; } } /** * 删除数据 */ public void delete(int index) { if (index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else { for (int i = index; i < elements; i++) { arr[index] = arr[index + 1]; } elements--; } } /** * 更新数据 */ public void change(int index,int newvalue) { if (index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); }else { arr[index] = newvalue; } }}
3.测试类TestMyArray
package cn.mydata;public class TestMyArray { public static void main(String[] args) { MyArray myArray = new MyArray(); myArray.insert(30); myArray.insert(60); myArray.insert(90); myArray.display();// System.out.println(myArray.search(90));// System.out.println(myArray.get(3));// myArray.delete(1);// myArray.display(); myArray.change(0, 12); myArray.display(); MyOrderArray myOrderArray = new MyOrderArray(); myOrderArray.insert(30); myOrderArray.insert(10); myOrderArray.insert(90); myOrderArray.insert(60); myOrderArray.display(); System.out.println(myOrderArray.binarySearch(30)); System.out.println(myOrderArray.binarySearch(90)); }}
转载地址:http://sncii.baihongyu.com/