纯粹是复习数据结构
/**
* 无序数组的实现
* 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();
}
}