陣列結構之陣列

weixin_34037977發表於2016-04-03

資料結構之陣列的運用,無非是增刪查操作,就有序陣列和無序陣列進行這三種操作:

一、查詢

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

 

相關文章