• Java数据结构与算法-数组


      1 public class TestMyArray{
      2     
      3     public static void main(String[] args) {
      4         
      5         MyArray array = new MyArray(6);
      6         array.insert(10);
      7         array.insert(12);
      8         array.insert(8);
      9         array.insert(17);
     10         array.insert(6);
     11         array.insert(15);
     12         array.display();
     13         System.out.println(array.search(12));
     14         
     15         System.out.println(array.get(1));
     16         
     17         array.delete(1);
     18         array.delete(3);
     19         array.display();
     20         
     21     }
     22     
     23 }
     24 
     25 /**
     26  * 使用自定义类封装数组 添加类方法实现操作
     27  * 
     28  */
     29 class MyArray {
     30     private long[] array;
     31     //表示有效数据的长度
     32     private int elements;
     33     public MyArray() {
     34         array = new long[50];
     35     }
     36 
     37     public MyArray(int maxSize) {
     38         array = new long[maxSize];
     39     }
     40 
     41     /**
     42      * 添加数据
     43      */
     44     public void insert(long value){
     45         array[elements] = value;
     46         elements++;
     47     }
     48     
     49     /**
     50      * 显示数据
     51      */
     52     public void display(){
     53         System.out.print("[" + array[0]);
     54         for(int i= 1; i < elements; i++){
     55             System.out.print("," + array[i]);
     56         }
     57         System.out.println("]");
     58     }
     59     
     60     /**
     61      * 查找数据
     62      */
     63     public int search(long value){
     64         int i = 0;
     65         for(; i < elements; i++){
     66             if(value == array[i]){
     67                 break;
     68             }
     69         }
     70         if(i == elements){
     71             return -1;
     72         } else {
     73             return i;
     74         }
     75     }
     76     /**
     77      * 查找数据,根据索引来查
     78      */
     79     public long get(int index){
     80         indexOK(index);
     81         return array[index];
     82     }
     83     
     84     /**
     85      * 删除数据
     86      */
     87     public void delete(int index){
     88         indexOK(index);
     89         elements--;
     90         for(int i = index; i < elements; i++){
     91             array[i] = array[i+1];
     92         }
     93     }
     94     
     95     /**
     96      * 更新数据
     97      */
     98     public void change(int index, int newValue){
     99         indexOK(index);
    100         array[index] = newValue;
    101     }
    102     
    103     /**
    104      * 角标越界
    105      */
    106     public void indexOK(int index){
    107         if(index >= elements || index < 0){
    108             throw new ArrayIndexOutOfBoundsException();
    109         }
    110     }
    111 }
      1 package cn.array;
      2 
      3 /**
      4  * 有序数组
      5  */
      6 public class TestMyOrderArray{
      7     
      8     public static void main(String[] args) {
      9         
     10         MyOrderArray array = new MyOrderArray(6);
     11         array.insert(10);
     12         array.insert(12);
     13         array.insert(8);
     14         array.insert(17);
     15         array.insert(6);
     16         array.insert(15);
     17         array.display();
     18         System.out.println(array.search(12));
     19         
     20         System.out.println(array.get(1));
     21         
     22         array.delete(1);
     23         array.delete(3);
     24         array.insert(3);
     25         array.display();
     26         
     27     }
     28     
     29 }
     30 
     31 /**
     32  * 使用自定义类封装数组 添加类方法实现操作
     33  * 
     34  */
     35 class MyOrderArray{
     36     private long[] array;
     37     //表示有效数据的长度
     38     private int elements;
     39     public MyOrderArray() {
     40         array = new long[50];
     41     }
     42 
     43     public MyOrderArray(int maxSize) {
     44         array = new long[maxSize];
     45     }
     46 
     47     /**
     48      * 添加数据
     49      */
     50     public void insert(long value){
     51         int i ;
     52         for(i = 0; i < elements; i++){
     53             if(array[i] > value){
     54                 break;
     55             }
     56         }
     57         
     58         for(int j = elements ; j > i ; j--){
     59             array[j] = array[j - 1];
     60         }
     61         
     62         array[i] = value;
     63         elements++;
     64     }
     65     
     66     /**
     67      * 显示数据
     68      */
     69     public void display(){
     70         System.out.print("[" + array[0]);
     71         for(int i= 1; i < elements; i++){
     72             System.out.print("," + array[i]);
     73         }
     74         System.out.println("]");
     75     }
     76     
     77     /**
     78      * 查找数据
     79      */
     80     public int search(long value){
     81         int i = 0;
     82         for(; i < elements; i++){
     83             if(value == array[i]){
     84                 break;
     85             }
     86         }
     87         if(i == elements){
     88             return -1;
     89         } else {
     90             return i;
     91         }
     92     }
     93     /**
     94      * 查找数据,根据索引来查
     95      */
     96     public long get(int index){
     97         indexOK(index);
     98         return array[index];
     99     }
    100     
    101     /**
    102      * 删除数据
    103      */
    104     public void delete(int index){
    105         indexOK(index);
    106         elements--;
    107         for(int i = index; i < elements; i++){
    108             array[i] = array[i+1];
    109         }
    110     }
    111     
    112     /**
    113      * 更新数据
    114      */
    115     public void change(int index, int newValue){
    116         indexOK(index);
    117         array[index] = newValue;
    118     }
    119     
    120     /**
    121      * 角标越界
    122      */
    123     public void indexOK(int index){
    124         if(index >= elements || index < 0){
    125             throw new ArrayIndexOutOfBoundsException();
    126         }
    127     }
    128 }
     1 /**
     2      * 二分法查找数据
     3      */
     4     public int binarySearch(long value){
     5         int middle = 0;
     6         int low = 0;
     7         int pow = elements;
     8         
     9         while(true){
    10             middle = (pow + low) / 2;
    11             if(array[middle] == value){
    12                 return middle;
    13             }else if(low > pow){
    14                 return -1;
    15             }else{
    16                 if(array[middle] > value){
    17                     pow = middle - 1;
    18                 }else {
    19                     low = middle + 1;
    20                 }
    21             }
    22             
    23         }
    24         
    25     }
  • 相关阅读:
    封装组件集合
    Vue组件封装(以封装一个button组件为例)
    Spark权威指南读书笔记(四) 聚合与连接
    leetcode刷题笔记一百三十五题 分发糖果
    leetcode刷题笔记一百三十四题 加油站
    leetcode刷题笔记一百三十三题 克隆图
    leetcode刷题笔记一百三十一与一百三十二题 分割回文串与分割回文串II
    leetcode刷题笔记一百三十题 被围绕的区域
    leetcode刷题笔记一百二十九题 求根到叶子节点数字之和
    leetcode刷题笔记一百二十八题 最长连续序列
  • 原文地址:https://www.cnblogs.com/litaiqing/p/4628542.html
Copyright © 2020-2023  润新知