資料結構之陣列的運用,無非是增刪查操作,就有序陣列和無序陣列進行這三種操作:
一、查詢
(1)無序陣列查詢特定元素,線性查詢:
1 public static void unSortSearchKey(int arr[], int key) { 2 for (int i = 0; i < arr.length; i++) { 3 if(arr[i]==key){ 4 System.out.println(key+"在無序陣列中索引為的"+i+"個位置"); 5 } 6 else { 7 continue; 8 } 9 if(i==arr.length){ 10 System.out.println(key+"不存在與無序陣列中"); 11 } 12 } 13 14 }
(2)有序陣列查詢特定元素,可以採用線性查詢或者是二分查詢(BinarySearch),這裡我們使用二分查詢 陣列為升序排列或降序排列,使用二分查詢程式碼程式碼有些不同,坑爹呀
1 public static int sortSearchKey(int[] arrSort, int key) { 2 3 int max,min,mid; 4 min = 0; 5 max = arrSort.length-1; 6 while(min<=max) 7 { 8 mid = (max+min)>>1; 9 if(key>arrSort[mid]) 10 max = mid - 1; 11 else if(key<arrSort[mid]) 12 min = mid + 1; 13 else 14 return mid; 15 } 16 return -min-1; 17 }
二、插入
(1)向有序陣列中插入元素,並返回插入元素後的陣列:
1 public static int[] insertKey(int[] arrSort, int key_insert) { 2 // int left=0; 3 // int right=arrSort.length-1; 4 // int half=(left+right)/2; 5 int position=sortSearchKey(arrSort, key_insert); 6 if(position>=0){ 7 arrSort=Arrays.copyOf(arrSort, arrSort.length+1); 8 for(int x=arrSort.length-1;x>position;x--){ 9 arrSort[x]=arrSort[x-1]; 10 } 11 arrSort[position]=key_insert; 12 // displayArr(arrSort); 13 } 14 else{ 15 arrSort=Arrays.copyOf(arrSort, arrSort.length+1); 16 for(int x=arrSort.length-1;x>=-(position+1);x--){ 17 arrSort[x]=arrSort[x-1]; 18 } 19 arrSort[-(position+1)]=key_insert; 20 // displaySortArr(arrSort); 21 } 22 return arrSort; 23 }
(2)無序陣列中插入元素(陣列擴容,插入到陣列的最後即可)
1 public static void insertKey_2(int[] arr, int key_insert) { 2 Arrays.copyOf(arr, arr.length+1); 3 arr[arr.length-1]=key_insert; 4 displayArr(arr); 5 }
三、刪除元素
1 public static void delete_1(int arr[],int delSortIndexKey) { 2 if(delSortIndexKey>=arr.length){ 3 return; 4 } 5 for(int i=delSortIndexKey;i<arr.length-1;i++){ 6 arr[i]=arr[i+1]; 7 } 8 arr[arr.length-1]=0; 9 displaySortArr(arr); 10 }