一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Java數據結構和算法(有序數組和二分查找)

詳解Java數據結構和算法(有序數組和二分查找)

2021-01-09 14:26臨窗聽雨 Java教程

本篇文章主要介紹了詳解Java數據結構和算法(有序數組和二分查找),具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、概述

有序數組中常常用到二分查找,能提高查找的速度。今天,我們用順序查找和二分查找實現數組的增刪改查。

二、有序數組的優缺點

優點:查找速度比無序數組快多了
缺點:插入時要按排序方式把后面的數據進行移動

三、有序數組和無序數組共同優缺點

刪除數據時必須把后面的數據向前移動來填補刪除項的漏洞

四、代碼實現

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public class OrderArray {
  
   private int nElemes; //記錄數組長度
   
   private long[] a;
   
   /**
   * 構造函數里面初始化數組 賦值默認長度
   *
   * @param max
   */
   public OrderArray(int max){
     this.a = new long[max];
     nElemes = 0;
   }
   
   //查找方法 (二分查找)
   public int find(long searchElement){
     int startIndex = 0;
     int endIndex = nElemes-1;
     int curIn;
     while(true){
       curIn = (startIndex + endIndex)/2;
       if(a[curIn]==searchElement){
         return curIn; //找到
       }else if(startIndex>endIndex){ //沒有找到
         return nElemes; //返回大于最大索引整數
       }else{ //還要繼續找
         if(a[curIn]<searchElement){
           startIndex = curIn + 1; //改變最小索引
         }else{ //往前找
           endIndex = curIn -1;
         }
       }
       
     }
   }
   
   
   //插入元素(線性查找)
   public void insert(long value){
     int j;
     for(j=0;j<nElemes;j++){
       if(a[j]>value){
         break;
       }
     }
     for(int k=nElemes;k>j;k--){
       a[k] = a[k-1];
     }
     a[j] = value;
     nElemes++;
   }
   
   //刪除數據項
   public boolean delete(long value){
     int j = find(value);
     if(j==nElemes){
       return false; //沒找到
     }else{
       //所有元素往前移動一位
       for(int k=j;k<nElemes;k++)
       a[k] = a[k+1];
       
       nElemes--;
       return true;
     }
   }
   //展示的方法
   public void display(){
     for(int i=0;i<nElemes;i++){
       System.out.print(a[i]+" ");
     }
   }
   
   public int size(){
     return nElemes;
   }
}

五、測試

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main(String[] args) {
    int max = 100;
    OrderArray oa = new OrderArray(max);
    oa.insert(12);
    oa.insert(14);
    oa.insert(90);
    oa.insert(89);
    oa.insert(87);
    oa.insert(88);
    oa.insert(67);
    oa.display();
    int searchkey = 90;
    if(oa.find(searchkey)!=oa.size()){
      System.out.println("found"+searchkey);
    }else{
      System.out.println("not found");
    }
    oa.delete(88);
    oa.delete(90);
    oa.delete(89);
    oa.display();
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.jianshu.com/p/8f5f8c04b531?utm_source=tuicool&utm_medium=referral

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 2019午夜福合集高清完整版 | 四虎影音在线 | 久草热8精品视频在线观看 久草草在线视视频 | 日本一区二区三区视频在线观看 | 香艳69xxxxx有声小说 | 国产自拍视频一区 | 色综七七久久成人影 | 手机能看的黄色网站 | 国产午夜精品福利久久 | 久久综合老色鬼网站 | 丰满大乳欲妇三级k8 | 甜宠巨肉h文1v1校园 | 天天爱综合网 | 狠狠色综合久久婷婷 | 天堂网www在线中文天堂 | chinesemature丰满成熟 | 亚洲香蕉综合在人在线视看 | 午夜影院免费看 | 成人青青草 | 国产亚洲玖玖玖在线观看 | 九九九九九九精品免费 | 亚洲视频在线一区二区 | 国内精品国语自产拍在线观看55 | 久久电影院久久国产 | 亚洲国产成人资源在线桃色 | 亚洲精品综合一二三区在线 | 公交车高h | 互换娇妻爽文100系列小说 | 国产精品酒店视频免费看 | 风间由美理论片在线观看 | 日本福利片国产午夜久久 | 日本最新伦中文字幕 | 国产福利专区精品视频 | 欧美人做人爱a全程免费 | 视频亚洲一区 | 日韩中文字幕在线不卡 | 四虎影视紧急入口地址大全 | 国产精品久久久久久久福利院 | 亚洲日韩精品欧美一区二区一 | 国产在线精品成人一区二区三区 | 国产caonila在线观看 |