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());
}
}