標籤:new item boolean pre public 提高 order 線性表 items
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實現