• 有序线性表(存储结构数组)--Java实现


     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 }
  • 相关阅读:
    为什么转速环经过pi调节后输出的是电流?
    如何将mysql、php、nginx设置为开机自启动
    rm-rf /*
    2020/4/23-linux中的定时任务详解
    2020/4/20 一键部署服务
    2020/4/20-ansible一键部署nfs
    2020/4/20-backup之rsync
    2020/4/19-linux中/etc/hosts
    2020/4/18-linux中的selinux
    2020/4/18-linux中的iptables
  • 原文地址:https://www.cnblogs.com/sun1993/p/7680599.html
Copyright © 2020-2023  润新知