1、模拟数组,参看 数据结构-00 数组(无序数组) ,做成有序数组,主要是对insert(long value) 进行处理
package org.gzw.arr;
public class MyOrderArray {
private long[] arr;
/* 有效数据的长度 */
private int elements;
public MyOrderArray() {
arr = new long[50];
}
public MyOrderArray(int maxSize) {
arr = new long[maxSize];
}
/**
* 添加数据(在此排序:从小到大)
*/
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 String display(){
StringBuffer strbuf = new StringBuffer();
strbuf.append("[ ");
/*for(long l : arr){
strbuf.append(l + ", ");
}*/
for(int i =0; i<elements;i++){
strbuf.append(arr[i] + ", ");
}
strbuf.delete(strbuf.length()-1, strbuf.length());
strbuf.append("]");
return strbuf.toString();
}
/**
* 查询数据,并返回位置索引
*/
public int search(long value){
int i;
for(i=0;i<elements;i++){
if(arr[i] == value) break;
}
if(i==elements){
return -1;
}else{
return i;
}
}
/**
* 查找数据,更具索引来查
*/
public long get(int index){
if(0<=index && index<elements){
return arr[index];
}else{
throw new ArrayIndexOutOfBoundsException();
}
}
/**
* 删除数据
*/
public void delete(int index){
if(0<=index && index<elements){
for(int i=index;i<elements;i++){
if(i<elements-1){
arr[i] = arr[i+1];
}else break;
}
elements--;
}else{
throw new ArrayIndexOutOfBoundsException();
}
}
/**
* 更新数据
*/
public void change(int index, long value){
if(0<=index && index<elements){
arr[index] = value;
}else{
throw new ArrayIndexOutOfBoundsException();
}
}
}
2、测试
package org.gzw.arr;
public class TestMyOrderArray {
public static void main(String[] args) {
MyOrderArray myOrderArr = new MyOrderArray(6);
myOrderArr.insert(1);
myOrderArr.insert(139);
myOrderArr.insert(229);
myOrderArr.insert(9);
myOrderArr.insert(19);
myOrderArr.insert(39);
System.out.println(myOrderArr.display());
}
}