1. 程式人生 > >有序線性表(存儲結構數組)--Java實現

有序線性表(存儲結構數組)--Java實現

ole 插入元素 urn true boolean ava code -- key

 1 /*有序數組:主要是為了提高查找的效率
 2  *查找:無序數組--順序查找,有序數組--折半查找
 3  *其中插入比無序數組慢
 4  * */
 5 public class MyOrderedArray {
 6     private long[] arr;
 7     private int items;
 8     
 9     public MyOrderedArray(int max) {
10         arr = new long[max];
11         items = 0;
12     }
13     
14     //數組中元素的個數
15     public
int size(){ 16 return items; 17 } 18 19 //折半查找 20 public int find(long key){ 21 int low = 0; 22 int high = items - 1; 23 int mid;//變化的 24 while(low <= high){ 25 mid = (low + high) / 2; 26 if(key == arr[mid]){ 27 return
mid; 28 } 29 else if(key > arr[mid]){ 30 low = mid + 1; 31 } 32 else if(key < arr[mid]){ 33 high = mid - 1; 34 } 35 } 36 return -1; 37 } 38 39 //插入元素 40 public void insert(long
key){ 41 int i; 42 43 for( i = 0; i < items; i++){ //先找到位置 44 if(key < arr[i]){ 45 break; 46 } 47 } 48 49 for(int k = items;k>i; k--){ //移動元素 50 arr[k] = arr[k -1]; 51 } 52 53 arr[i] = key;//插入元素到找到的位置 54 items++; 55 } 56 57 //刪除元素--先判斷找的位置合法--在判斷 58 public boolean delete(long key){ 59 int i = find(key); 60 if(i == items){ 61 return false; 62 } 63 else{ 64 for(int k = i; k < items; k++){ 65 arr[k] = arr[k + 1]; 66 } 67 items--; 68 return true; 69 } 70 } 71 72 public void displayArray(){ 73 for(int i = 0;i < items;i++){ 74 System.out.print(arr[i] + " "); 75 } 76 System.out.println(); 77 } 78 79 }

有序線性表(存儲結構數組)--Java實現