有序線性表(存儲結構數組)--Java實現
阿新 • • 發佈:2017-10-17
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 publicint 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 returnmid; 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(longkey){ 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實現