zoukankan      html  css  js  c++  java
  • 数组结构之数组

    数据结构之数组的运用,无非是增删查操作,就有序数组和无序数组进行这三种操作:

    一、查找

    (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 }
  • 相关阅读:
    memento模式
    observe模式
    state模式
    Trie树的简单介绍和应用
    strategy模式
    全组和问题
    SRM 551 DIV2
    全排列问题
    TSE中关于分词的算法的改写最少切分
    template模式
  • 原文地址:https://www.cnblogs.com/ysw-go/p/5349156.html
Copyright © 2011-2022 走看看