国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

服務器之家 - 編程語言 - Java教程 - Java 二分查找算法的實現

Java 二分查找算法的實現

2020-09-13 00:08FWWC Java教程

這篇文章主要介紹了Java 如何實現二分查找算法,幫助大家更好的理解和學習Java 算法,感興趣的朋友可以了解下

二分查找又稱折半查找,它是一種效率較高的查找方法。

折半查找的算法思想是將數列按有序化(遞增或遞減)排列,查找過程中采用跳躍式方式查找,即先以有序數列的中點位置為比較對象,如果要找的元素值小 于該中點元素,則將待查序列縮小為左半部分,否則為右半部分。通過一次比較,將查找區間縮小一半。 折半查找是一種高效的查找方法。它可以明顯減少比較次數,提高查找效率。但是,折半查找的先決條件是查找表中的數據元素必須有序。

折半查找法的優點是比較次數少,查找速度快,平均性能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查找方法適用于不經常變動而查找頻繁的有序列表。

二分算法步驟描述

① 首先確定整個查找區間的中間位置 mid = ( left + right )/ 2

② 用待查關鍵字值與中間位置的關鍵字值進行比較;

若相等,則查找成功

若大于,則在后(右)半個區域繼續進行折半查找

若小于,則在前(左)半個區域繼續進行折半查找

③ 對確定的縮小區域再按折半公式,重復上述步驟。

最后,得到結果:要么查找成功, 要么查找失敗。折半查找的存儲結構采用一維數組存放。 折半查找算法舉例

對給定數列(有序){ 3,5,11,17,21,23,28,30,32,50,64,78,81,95,101},按折半查找算法,查找關鍵字值為81的數據元素。

二分查找算法討論:

優點:ASL≤log2n,即每經過一次比較,查找范圍就縮小一半。經log2n 次計較就可以完成查找過程。

缺點:因要求有序,所以要求查找數列必須有序,而對所有數據元素按大小排序是非常費時的操作。另外,順序存儲結構的插入、刪除操作不便利。

考慮:能否通過一次比較拋棄更多的部分(即經過一次比較,使查找范圍縮得更小),以達到提高效率的目的。……?

可以考慮把兩種方法(順序查找和折半查找)結合起來,即取順序查找簡單和折半查找高效之所長,來達到提高效率的目的?實際上這就是分塊查找的算法思想。

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
public class BinarySearch {
  /**
   * 二分查找算法
   *
   * @param srcArray
   *      有序數組
   * @param key
   *      查找元素
   * @return key的數組下標,沒找到返回-1
   */
  public static void main(String[] args) {
    int srcArray[] = { 3, 5, 11, 17, 21, 23, 28, 30, 32, 50, 64, 78, 81,
        95, 101 };
    System.out.println(binSearch(srcArray, 0, srcArray.length - 1, 81));
  }
 
  // 二分查找遞歸實現
  public static int binSearch(int srcArray[], int start, int end, int key) {
    int mid = (end - start) / 2 + start;
    if (srcArray[mid] == key) {
      return mid;
    }
    if (start >= end) {
      return -1;
    } else if (key > srcArray[mid]) {
      return binSearch(srcArray, mid + 1, end, key);
    } else if (key < srcArray[mid]) {
      return binSearch(srcArray, start, mid - 1, key);
    }
    return -1;
  }
 
  // 二分查找普通循環實現
  public static int binSearch(int srcArray[], int key) {
    int mid = srcArray.length / 2;
    if (key == srcArray[mid]) {
      return mid;
    }
 
    int start = 0;
    int end = srcArray.length - 1;
    while (start <= end) {
      mid = (end - start) / 2 + start;
      if (key < srcArray[mid]) {
        end = mid - 1;
      } else if (key > srcArray[mid]) {
        start = mid + 1;
      } else {
        return mid;
      }
    }
    return -1;
  }
}

以上就是Java 二分查找算法的實現的詳細內容,更多關于Java 二分查找算法的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.open-open.com/code/view/1420709718703

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 中文av一区 | 自拍视频网站 | 欧美综合在线观看 | 日韩城人网站 | 综合久久久久 | www.国产精品| 欧美一区国产一区 | 一区二区三区欧美 | 国产精品久久99 | 欧美日韩久久久 | 国产精品久久久久精 | 一级特色黄大片 | 国产麻豆乱码精品一区二区三区 | 91麻豆精品国产91久久久久久久久 | 成年人在线观看免费视频 | 日韩精品一二三区 | 欧美专区在线观看 | 91尤物网站网红尤物福利 | 成人免费不卡视频 | 欧美一区二区三区四区不卡 | 国产一区二区三区久久 | 中文字幕在线观看 | 日韩激情在线 | 91在线一区 | 特黄视频免费观看 | 不卡一二三区 | 美足av | 亚洲欧美制服诱惑 | 欧美在线视频a | 国产精品毛片一区二区 | 国产视频在线看 | 2023国产精品久久久精品双 | 毛片黄片 | 日韩亚洲 | 精品久久久久久久久久久久 | 免费不卡视频 | 精品国产子伦久久久久久小说 | 亚洲一区精品在线 | 久久精品亚洲 | 国产在亚洲 线视频播放 | 亚洲欧美中文字幕 |