纯粹是复习数据结构
/** * 无序数组的实现 * User: sunlong * Date: 13-10-22 * Time: 下午2:38 */ public class MyArray { private int[] data; private int index = -1; public MyArray(int size){ if(size < 1){ throw new RuntimeException("size must be larger than 1"); } data = new int[size]; } /** * 插入的时间是一常数 * 时间复杂度 O(1) * @param value */ public void insert(int value) { if(index == data.length){ throw new RuntimeException("array is full"); } data[++index] = value; } /** * 删除需要先找到对象平均是N/2,同时需要移动空间也是N/2,整体上时间复杂度O(n) * @param value */ public void delete(int value){ int i=0; for (; i<=index; i++) { if(data[i] == value){ break; } } for(int j=i; j<=index-1; j++){ data[j] = data[j+1]; } index--; } /** * 返回索引 * 线性查找 时间复杂度O(n) * @param value * @return */ public int find(int value){ for (int i=0; i<=index; i++) { if(data[i] == value){ return i; } } return -1; } public void print(){ System.out.println("-------------------"); for (int i=0; i<=index; i++) { System.out.println(data[i]); } System.out.println("-------------------"); } } class MyArrayTest{ public static void main(String[] args){ MyArray array = new MyArray(10); array.insert(5); array.insert(4); array.insert(6); array.insert(3); array.insert(1); array.insert(2); array.insert(8); array.insert(10); array.insert(9); array.insert(7); array.print(); System.out.println(array.find(5)); System.out.println(array.find(8)); System.out.println(array.find(11)); array.delete(8); array.insert(11); array.print(); } }