精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

畢業生求職必會算法手把手教你二分法查找

開發 前端 算法
當數組或者集合中存放的元素數量非常多的時候,想要跟蹤具體某個元素的位置或者是否存在,常規方式是循環每一個元素直到找到要查找的元素為止。這樣的查找方式效率非常低下,這個時候需要使用二分法來實現,提高查找效率。

 1、二分法查找的背景

當數組或者集合中存放的元素數量非常多的時候,想要跟蹤具體某個元素的位置或者是否存在,常規方式是循環每一個元素直到找到要查找的元素為止。這樣的查找方式效率非常低下,這個時候需要使用二分法來實現,提高查找效率。

2、二分法查找的介紹

二分法查找(折半查找),找指定數值所在的位置

百度百科是這樣介紹二分法查找的:


3、二分法查找的算法思想

假設數組是按升序排序的,對于給定的目標值aim,從數組的中間位置開始查找:1.若查找數據與中間元素值正好相等,則返回中間元素值的索引;2.若查找數值比中間值小,則以整個查找范圍的前半部分作為新的查找范圍;3.若查找數值比中間值大,則以整個查找范圍的后半部分作為新的查找范圍;注:查找成功返回索引,失敗返回-1

4、代碼實現

4.1 利用循環的方式實現二分法查找

  1. public class BinarySearch { 
  2.     public static void main(String[] args) { 
  3.         // 生成一個隨機數組 
  4.         int[] array = suiji(); 
  5.         // 對隨機數組排序 
  6.         Arrays.sort(array); 
  7.         System.out.println("產生的隨機數組為: " + Arrays.toString(array)); 
  8.  
  9.         System.out.println("要進行查找的值: "); 
  10.         Scanner input = new Scanner(System.in); 
  11.         // 進行查找的目標值 
  12.         int aim = input.nextInt(); 
  13.  
  14.         // 使用二分法查找 
  15.         int index = binarySearch(array, aim); 
  16.         System.out.println("查找的值的索引位置: " + index); 
  17.  
  18.     } 
  19.  
  20.     /** 
  21.      * 生成一個隨機數組 
  22.      *  
  23.      * @return 返回值,返回一個隨機數組 
  24.      */ 
  25.     private static int[] suiji() { 
  26.         // random.nextInt(n)+m  返回m到m+n-1之間的隨機數 
  27.         int n = new Random().nextInt(6) + 5; 
  28.         int[] array = new int[n]; 
  29.         // 循環遍歷為數組賦值 
  30.         for (int i = 0; i < array.length; i++) { 
  31.             array[i] = new Random().nextInt(100); 
  32.         } 
  33.         return array; 
  34.     } 
  35.  
  36.     /** 
  37.      * 二分法查找  ---循環的方式實現 
  38.      *  
  39.      * @param array 要查找的數組 
  40.      * @param aim 要查找的值 
  41.      * @return 返回值,成功返回索引,失敗返回-1 
  42.      */ 
  43.     private static int binarySearch(int[] array, int aim) { 
  44.         // 數組最小索引值 
  45.         int left = 0; 
  46.         // 數組最大索引值 
  47.         int right = array.length - 1; 
  48.         int mid; 
  49.         while (left <= right) { 
  50.             mid = (left + right) / 2; 
  51.             // 若查找數值比中間值小,則以整個查找范圍的前半部分作為新的查找范圍 
  52.             if (aim < array[mid]) { 
  53.                 right = mid - 1; 
  54.                 // 若查找數值比中間值大,則以整個查找范圍的后半部分作為新的查找范圍 
  55.             } else if (aim > array[mid]) { 
  56.                 left = mid + 1; 
  57.                 // 若查找數據與中間元素值正好相等,則放回中間元素值的索引 
  58.             } else { 
  59.                 return mid; 
  60.             } 
  61.         } 
  62.         return -1; 
  63.     } 

代碼執行結果:

  1. 產生的隨機數組為: [16, 33, 40, 46, 57, 63, 65, 71, 85] 
  2. 要進行查找的值:  
  3. 46 
  4. 查找的值的索引位置: 3 

若輸入的值找不到,則返回-1

  1. 產生的隨機數組為: [28, 41, 47, 56, 70, 81, 85, 88, 95] 
  2. 要進行查找的值:  
  3. 66 
  4. 查找的值的索引位置: -1 

4.2 利用遞歸的方式實現二分法查找

  1. public class BinarySearch2 { 
  2.     public static void main(String[] args) { 
  3.         // 生成一個隨機數組 
  4.         int[] array = suiji(); 
  5.         // 對隨機數組排序 
  6.         Arrays.sort(array); 
  7.         System.out.println("產生的隨機數組為: " + Arrays.toString(array)); 
  8.  
  9.         System.out.println("要進行查找的值: "); 
  10.         Scanner input = new Scanner(System.in); 
  11.         // 進行查找的目標值 
  12.         int aim = input.nextInt(); 
  13.  
  14.         // 使用二分法查找 
  15.         int index = binarySearch(array, aim, 0, array.length - 1); 
  16.         System.out.println("查找的值的索引位置: " + index); 
  17.     } 
  18.  
  19.     /** 
  20.      * 生成一個隨機數組 
  21.      * 
  22.      * @return 返回值,返回一個隨機數組 
  23.      */ 
  24.     private static int[] suiji() { 
  25.         // Random.nextInt(n)+m  返回m到m+n-1之間的隨機數 
  26.         int n = new Random().nextInt(6) + 5; 
  27.         int[] array = new int[n]; 
  28.         // 循環遍歷為數組賦值 
  29.         for (int i = 0; i < array.length; i++) { 
  30.             array[i] = new Random().nextInt(100); 
  31.         } 
  32.         return array; 
  33.     } 
  34.  
  35.     /** 
  36.      * 二分法查找 ---遞歸的方式 
  37.      * 
  38.      * @param array 要查找的數組 
  39.      * @param aim   要查找的值 
  40.      * @param left  左邊最小值 
  41.      * @param right 右邊最大值 
  42.      * @return 返回值,成功返回索引,失敗返回-1 
  43.      */ 
  44.     private static int binarySearch(int[] array, int aim, int leftint right) { 
  45.         if (aim < array[left] || aim > array[right]) { 
  46.             return -1; 
  47.         } 
  48.         // 找中間值 
  49.         int mid = (left + right) / 2; 
  50.         if (array[mid] == aim) { 
  51.             return mid; 
  52.         } else if (array[mid] > aim) { 
  53.             //如果中間值大于要找的值則從左邊一半繼續遞歸 
  54.             return binarySearch(array, aim, left, mid - 1); 
  55.         } else { 
  56.             //如果中間值小于要找的值則從右邊一半繼續遞歸 
  57.             return binarySearch(array, aim, mid + 1, array.length-1); 
  58.         } 
  59.     } 

遞歸相較于循環,代碼比較簡潔,但是時間和空間消耗比較大,效率低。在實際的學習與工作中,根據情況選擇使用。

 

責任編輯:姜華 來源: 程序猿編程
相關推薦

2023-12-27 23:30:50

2021-12-26 00:10:39

二分法排查版本

2021-12-11 20:20:19

Python算法線性

2011-03-24 14:15:27

雙TOP二分法分頁

2018-06-15 14:26:42

2021-10-19 09:59:25

二分法排序數組

2012-12-29 14:29:12

應屆畢業生求職

2022-04-13 07:31:20

CAP定理分布式數據庫

2011-05-03 15:59:00

黑盒打印機

2011-01-10 14:41:26

2025-05-07 00:31:30

2021-07-14 09:00:00

JavaFX開發應用

2010-05-25 10:44:42

畢業生求職陷阱

2010-05-27 10:10:07

職場經驗

2011-02-22 13:46:27

微軟SQL.NET

2021-12-28 08:38:26

Linux 中斷喚醒系統Linux 系統

2021-02-26 11:54:38

MyBatis 插件接口

2023-04-26 12:46:43

DockerSpringKubernetes

2022-03-14 14:47:21

HarmonyOS操作系統鴻蒙

2022-12-07 08:42:35

點贊
收藏

51CTO技術棧公眾號

国内精品久久久久影院一蜜桃| 中文字幕在线播放网址| 久久精品毛片| 中文字幕亚洲专区| 加勒比av中文字幕| 青草青在线视频| 久久日一线二线三线suv| 欧美中文字幕在线视频| 91无套直看片红桃在线观看| 国产电影一区二区| 无吗不卡中文字幕| 亚洲欧洲精品一区二区| 亚洲国产综合网| 石原莉奈在线亚洲二区| 自拍亚洲一区欧美另类| 性农村xxxxx小树林| 国产精品专区免费| 亚洲男女毛片无遮挡| 久久精精品视频| 一道本无吗一区| 亚洲专区一区二区三区| 久久天天躁狠狠躁夜夜躁| 亚洲激情 欧美| 日本久久久久| 欧美性猛交xxxx乱大交| 中国一级大黄大黄大色毛片| 麻豆国产在线播放| 成人综合在线网站| 91久久精品美女高潮| 国产高潮呻吟久久久| 色噜噜狠狠一区二区| av第一福利在线导航| 国产精品久久久久久久久免费樱桃| 成人激情直播| 国产有码在线观看| 日韩专区一卡二卡| 国内精品视频在线| 成人性视频免费看| 国产精品午夜一区二区三区| 欧美成人伊人久久综合网| 污色网站在线观看| 亚洲wwww| 好吊成人免视频| www.亚洲视频.com| 在线xxxx| 亚洲精品免费在线播放| 一区二区三区欧美成人| 九色网友自拍视频手机在线| av不卡在线观看| 国产不卡一区二区三区在线观看| 一本色道久久综合精品婷婷| 免费成人av在线| 日韩免费黄色av| 国内自拍视频在线播放| 亚洲一区激情| 97在线视频免费看| 日本天堂在线视频| 在线看片欧美| 97精品视频在线| 国产精品23p| 激情欧美丁香| 久久久久久国产三级电影| 久久免费视频精品| 国色天香一区二区| 欧美极品少妇全裸体| 精品在线免费观看视频| 国内自拍一区| 91精品国产91久久久久久最新 | 欧美不卡在线播放| 国产羞羞视频在线播放| 亚洲观看高清完整版在线观看| 免费看日本黄色| 亚洲天堂av一区二区三区| 日本午夜在线| 久久精品一区蜜桃臀影院| 欧美一区二区三区精美影视 | 成人av在线资源网站| 国产欧美日韩在线播放| 香蕉久久一区二区三区| 久久日韩精品一区二区五区| 日本一区二区精品视频| 97在线观看免费观看高清| 亚洲欧洲精品一区二区精品久久久 | 午夜电影一区二区三区| 青青青免费在线| 韩日成人影院| 欧美日韩视频一区二区| 日本一区二区三区在线免费观看| 国产一区二区三区免费观看在线| 欧美一卡二卡在线| 加勒比精品视频| 欧美日韩国产传媒| 久久99热这里只有精品国产| 日产亚洲一区二区三区| 丝袜国产日韩另类美女| 91精品在线播放| 五月婷婷六月激情| 国产精品免费久久| 天堂8在线天堂资源bt| 三级成人黄色影院| 日韩一区和二区| 亚洲一区二区观看| 99热在线成人| 91av视频在线播放| 国产精品久久久久久久免费看| 国产91丝袜在线18| 日韩精品欧美一区二区三区| 色屁屁www国产馆在线观看| 欧美色视频日本高清在线观看| 日本中文字幕二区| 日韩欧美四区| 美乳少妇欧美精品| 无码人妻黑人中文字幕| 国产九九视频一区二区三区| 欧美日韩精品中文字幕一区二区| 免费观看a级片| 免费理论片在线观看播放老| 国产精品国产三级国产aⅴ中文| 国产va亚洲va在线va| 久久影视精品| 亚洲久久久久久久久久久| 丝袜 亚洲 另类 欧美 重口| 日韩精品久久久久久| 成人在线免费观看一区| 五月香视频在线观看| 黑人巨大精品欧美一区二区三区| 欧美一级特黄aaa| 国产亚洲电影| 5566日本婷婷色中文字幕97| 精品人妻一区二区三区三区四区 | 欧美xxxx精品| 国产精品综合| 国产尤物99| 91在线中字| 欧美日韩国产一区二区三区地区| 日本xxxx裸体xxxx| 在线日韩欧美| 999精品在线观看| 国产在线观看a视频| 欧美日韩卡一卡二| av永久免费观看| 久久婷婷丁香| 免费成人看片网址| 制服丝袜专区在线| 精品福利视频一区二区三区| 久久中文免费视频| 韩国精品久久久| 99精品视频网站| 亚洲欧洲一二区| 日韩视频欧美视频| 91av国产精品| 亚洲女人的天堂| 亚洲黄色片免费看| 97偷自拍亚洲综合二区| 国产精品人人做人人爽| 午夜激情视频在线观看| 欧美区在线观看| 二区三区四区视频| 精品一二线国产| 色中文字幕在线观看| 国产亚洲观看| 欧美成人免费大片| 97久久精品午夜一区二区| 欧美日韩a v| 国产欧美视频一区二区| 国内自拍视频网| 日韩电影免费在线观看| 国产综合久久久久| 影音先锋男人在线资源| 精品福利一区二区三区免费视频| 日本一区二区网站| 久久免费美女视频| www.com操| 最新国产精品| 激情一区二区三区| 在线成人视屏 | 91网站免费入口| 青青青爽久久午夜综合久久午夜| 伊人久久av导航| 亚洲精品a区| 97在线看免费观看视频在线观看| 黄网站在线观看| 欧美精品久久久久久久久老牛影院| 国产激情无码一区二区三区| 成人午夜在线播放| 麻豆av免费在线| 99久久精品网| 国产一区福利视频| 国产麻豆一区| 久久久视频在线| 国产裸舞福利在线视频合集| 欧美精品v国产精品v日韩精品 | 欧美一级片黄色| 日韩成人一区二区| 日韩中文字幕亚洲精品欧美| 欧美18免费视频| 国产精品视频一区国模私拍| 亚洲图区一区| 亚洲欧美一区二区三区情侣bbw | 精品一区二区在线观看| 国产精品一色哟哟| 欧美在线观看视频一区| 成人资源av| 激情久久99| 97视频色精品| 成人短视频在线观看| 日韩极品精品视频免费观看| 国产精品嫩草影院桃色| 欧美视频在线看| 国产av 一区二区三区| 久久综合成人精品亚洲另类欧美 | 91精品中文在线| wwww亚洲| 久久久国产影院| 久草在现在线| 亚洲激情视频网站| 国产欧美综合视频| 欧美伊人久久久久久午夜久久久久| 久久精品99国产精| 18欧美亚洲精品| 中文字幕在线1| www.日韩精品| 奇米777在线| 蜜桃传媒麻豆第一区在线观看| www.日本在线播放| 欧美日韩天堂| 免费成人进口网站| 日韩极品一区| 欧美人与物videos另类| 精品国产一区二区三区成人影院 | 97久久伊人激情网| 99视频免费在线观看| 啊v视频在线一区二区三区| 国内av一区二区三区| 国产视频在线一区二区| 日本免费网站在线观看| 日韩一区二区高清| 国产精品热久久| 777xxx欧美| 国产一区二区三区中文字幕| 欧美偷拍一区二区| 特级西西444www高清大视频| 色婷婷综合久久久| 欧美一区二区三区不卡视频| 岛国av一区二区三区| 日本最新中文字幕| 亚洲h精品动漫在线观看| 欧美人与禽zozzo禽性配| 亚洲视频免费看| 久久久精品视频免费观看| 亚洲柠檬福利资源导航| 深夜福利影院在线观看| 一区二区三区欧美日韩| 精品99在线观看| 亚洲综合免费观看高清完整版在线| 午夜精品福利在线视频| 玉足女爽爽91| 久久亚洲AV无码| 午夜欧美一区二区三区在线播放| 国产一级淫片免费| 精品二区三区线观看| 免费在线不卡视频| 色悠悠久久综合| 国产一级精品毛片| 欧美丰满少妇xxxxx高潮对白| 欧美日韩系列| 欧美日韩123区| 国产精品观看在线亚洲人成网| 欧美专区福利免费| 国产精品自在线| 国产精品一区二区三区av| 99九九电视剧免费观看| 国产毛片精品| 日本一区视频在线播放| 久久精品av| 日本高清视频免费在线观看| 亚洲高清电影| 国产极品美女高潮无套久久久| 美女精品自拍一二三四| 九九热视频免费| 99久久综合精品| 黄色片在线观看免费| 综合色中文字幕| 国产精品成人av久久| 91久久线看在观草草青青| 91亚洲欧美激情| 亚洲精品97久久| 美国成人毛片| 久久久精品一区二区| 波多野结衣乳巨码无在线观看| 欧美一级黑人aaaaaaa做受| 国产a亚洲精品| 国产99在线免费| 日韩影院二区| 男人添女荫道口图片| 免费一级片91| 蜜臀aⅴ国产精品久久久国产老师| 26uuu国产一区二区三区| 啪啪一区二区三区| 红桃av永久久久| 91片黄在线观看喷潮| 日韩av一卡二卡| 老司机av在线免费看| 欧美亚洲另类激情另类| 亚洲影视资源| 欧美福利精品| 欧美三级黄美女| 久久99999| 91小视频在线| 久久久久免费看| 欧美日韩在线观看一区二区| 视频一区 中文字幕| 日韩一区二区福利| 亚洲天堂资源| 国产91视觉| 综合精品一区| 91插插插插插插插插| 99精品国产91久久久久久| jizz亚洲少妇| 欧美日韩情趣电影| 精品成人一区二区三区免费视频| 欧美黄色免费网站| 国产精品国产三级在线观看| 日本免费高清一区| 亚洲精品黄色| 国产人妖在线观看| 亚洲色图另类专区| 中文字幕人妻一区二区三区视频 | youjizz在线播放| 国内精品中文字幕| 日韩成人免费在线视频| 成人精品一区二区三区中文字幕| 欧美a级片免费看| 在线观看亚洲成人| 欧美18xxxxx| 97国产精品视频人人做人人爱| 97人人澡人人爽91综合色| 91精品一区二区三区四区| 精彩视频一区二区三区| 五月天婷婷丁香网| 欧日韩精品视频| 国产三级在线免费观看| 日韩av电影手机在线| 神马久久av| 欧美a v在线播放| 99久久夜色精品国产网站| 69精品久久久| 亚洲大尺度美女在线| 国产第一页在线| y111111国产精品久久婷婷| 欧美+亚洲+精品+三区| www.久久com| 亚洲一区二区三区美女| www.av日韩| 久久久久久国产免费 | 蜜桃一区二区三区四区| 日本综合在线观看| 欧美在线观看一二区| 91最新在线| 91精品久久久久久久久久另类| 国产精品国产一区| 搡的我好爽在线观看免费视频| 综合久久综合久久| 草草视频在线播放| 国内免费精品永久在线视频| 免费观看成人www动漫视频| 免费av观看网址| 国产日韩欧美亚洲| 一区二区美女视频| 欧美精品一区二区三区国产精品| 97色成人综合网站| 日本不卡在线观看视频| 国产女人18毛片水真多成人如厕| 中文字幕在线观看免费| 日韩中文在线中文网在线观看| 亚洲三级电影| 欧美久久在线观看| 91美女片黄在线观看91美女| 久久国产乱子伦精品| 精品国产一区二区三区在线观看| 国产不卡精品| 日本wwww视频| 国产精品久久久久久久裸模| 精品久久久中文字幕人妻| 性色av一区二区三区免费 | 日韩国产精品毛片| 成人国产免费视频| 中文在线资源天堂| 欧美国产日韩xxxxx| 亚洲福利天堂| 久久综合在线观看| 狠狠色香婷婷久久亚洲精品| av播放在线观看| 国产另类第一区| 日本欧美大码aⅴ在线播放| 青青草原国产视频| 亚洲天堂第二页| 日韩精品久久久久久久软件91| 美女av免费在线观看| 亚洲另类在线视频|