激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 在线成人一区二区 | 一级黄色免费电影 | 国产精品久久久久久模特 | 精品久久久久久久久久 | 亚洲精华液久久含羞草 | 欧美人成在线 | 91九色网址| 国产电影av在线 | 黄色影院在线看 | 色播视频在线播放 | 久久久久久69 | 99久久自偷自偷国产精品不卡 | 国产午夜精品一区二区三区视频 | 久国久产久精永久网页 | 涩涩激情网 | 日本欧美一区二区 | 亚洲国产馆 | 亚洲成人午夜精品 | 蜜桃视频网站在线观看 | 一级免费a | 国产精品三级a三级三级午夜 | 日本不卡一二三区 | 91免费在线视频 | 毛片免费大全短视频 | 午夜视频在线免费 | 日韩视频―中文字幕 | 噜噜噜在线 | 国产免费视频在线 | 久久久久久久黄色片 | 91www成人久久 | 亚洲精品成人久久 | 极品美女一级毛片 | 国产一及毛片 | 久久久一区二区三区视频 | av视在线 | 久久99精品久久久久久园产越南 | 久久久日韩精品一区二区三区 | 一级免费看片 | 国产午夜亚洲精品午夜鲁丝片 | 欧美成人国产va精品日本一级 | 欧美精品日日鲁夜夜添 |