精品欧美一区二区三区在线观看 _久久久久国色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在线电影| 91在线观看免费网站| 日本五十熟hd丰满| 久久看人人摘| 亚洲国产精彩中文乱码av在线播放| 色狠狠av一区二区三区| 久久久久九九九| 国产精品视频在线观看免费| 99人久久精品视频最新地址| 最近的2019中文字幕免费一页| 一边摸一边做爽的视频17国产 | 播播国产欧美激情| 一区二区三区中文字幕| 人人爽久久涩噜噜噜网站| 国产免费久久久久| 国产亚洲精品美女久久久久久久久久| 日韩写真欧美这视频| wwwwxxxx日韩| 涩涩视频网站在线观看| 一二三区精品视频| 中文字幕欧美人与畜| 日韩在线免费播放| 成人精品免费看| 亚洲精品免费网站| 亚洲无码久久久久| 日本不卡一区二区三区高清视频| 4k岛国日韩精品**专区| 欧美激情精品久久| 欧美黄色aaaa| 久久国产精品影视| 亚洲一二三不卡| 外国成人毛片| 欧美理论片在线| 另类小说色综合| 欧美在线va视频| 色噜噜夜夜夜综合网| 美女av免费在线观看| 678在线观看视频| 亚洲综合色自拍一区| 浴室偷拍美女洗澡456在线| 在线视频1区2区| 国产精品日日摸夜夜摸av| 欧美亚洲精品日韩| 国产在线视频你懂得| 久久久亚洲国产美女国产盗摄| 国产综合 伊人色| 神马午夜精品95| 91在线视频在线| 蜜桃臀一区二区三区| 美国成人毛片| 国产精品美女视频| 中文字幕一区二区三区5566| 菠萝蜜视频国产在线播放| 亚洲人成伊人成综合网小说| 精品无码av无码免费专区| 欧美aaaaaaa| 午夜欧美在线一二页| 欧美日韩性生活片| 欧美二三四区| 欧美三级电影在线观看| 亚洲欧美日韩综合网| 99综合99| 亚洲成年人在线| 最新中文字幕视频| 久久综合88| 久久99精品久久久久久噜噜| 国产污视频在线看| 久热国产精品| 国产日韩欧美夫妻视频在线观看| 超碰在线人人干| 99re在线视频这里只有精品| 欧美精品一区二区视频| 成年午夜在线| 一区二区三区欧美激情| 欧美黑人经典片免费观看| 卡通欧美亚洲| 欧美久久一二三四区| 日本少妇xxxx软件| 精品一区在线| 欧美成人精品xxx| 亚洲精品午夜国产va久久成人| 日韩精品一二三区| aa日韩免费精品视频一| 九色视频成人自拍| 亚洲嫩草精品久久| 亚洲精品无码久久久久久| 欧美高清影院| 日韩av在线免播放器| 免费黄色激情视频| 亚洲视频大全| 亚洲一区二区久久久久久 | 精品剧情v国产在线观看在线| 真人bbbbbbbbb毛片| 91精品蜜臀一区二区三区在线| 午夜精品在线视频| 91精品国自产| 久久天天做天天爱综合色| 中文字幕色呦呦| 91成人在线| 日韩经典中文字幕在线观看| 神马午夜精品91| 久久精品国产清高在天天线| 999在线免费观看视频| 成年人视频在线免费观看| 亚洲一卡二卡三卡四卡五卡| 污污网站在线观看视频| 亚州国产精品| 久久久久久97| 国产免费久久久| 国产精品人人做人人爽人人添| 波多野结衣家庭教师在线播放| 久久久久毛片免费观看| 尤物tv国产一区| 99久久久久久久久| 99国产精品久久久| 91.com在线| 亚洲免费一区三区| 久久国产精品亚洲| 91亚洲精品国偷拍自产在线观看 | 日韩精品一区二区三区三区免费 | 自拍偷拍欧美专区| 国产有码一区二区| 亚洲精品传媒| 欧美视频一区二区三区在线观看| 精品人妻一区二区三区视频| 影音先锋中文字幕一区| av色综合网| 国产精品一区hongkong| 欧美一二区视频| 青青草原在线免费观看| 国产美女精品人人做人人爽| 综合一区中文字幕| 91成人短视频在线观看| 最近2019中文字幕一页二页| 中日精品一色哟哟| 国产三级精品视频| 超碰在线公开97| 久久视频精品| 91九色精品视频| 麻豆影视在线观看_| 欧美精品日日鲁夜夜添| 美国黄色特级片| 久久综合综合久久综合| 中文字幕一区二区三区在线乱码| 亚洲我射av| 美乳少妇欧美精品| а√中文在线资源库| 亚洲综合色视频| 少妇激情一区二区三区视频| 国产午夜精品一区二区三区欧美| 国产一区二区三区四区五区在线 | 国产欧美一区二区三区在线看| melody高清在线观看| 欧美日本在线视频| 欧美黄片一区二区三区| 丁香婷婷深情五月亚洲| 欧美视频免费看欧美视频| 日本一区福利在线| 国产精品美乳一区二区免费| 超碰免费公开在线| 亚洲第一页在线| 国产成人自拍偷拍| 亚洲欧美日韩国产综合在线| 中文字幕18页| 久久激情婷婷| 男女爱爱视频网站| 欧美五码在线| 国产综合色香蕉精品| 污片在线免费观看| 亚洲人成在线一二| 国产伦一区二区| 午夜精品久久久久久久久久久| 成人在线一级片| 国产精品系列在线观看| 日日摸日日碰夜夜爽av| 天天久久综合| 欧美日韩天天操| 欧美日本三级| 热久久视久久精品18亚洲精品| 欧美极品视频| 日韩av最新在线观看| 国产又黄又猛又爽| 欧美性xxxx18| 久久久久久久福利| 中文在线资源观看网站视频免费不卡| 91亚洲一区二区| 美女爽到呻吟久久久久| 日韩精品一区二区三区电影| 天堂俺去俺来也www久久婷婷| 成人黄色大片在线免费观看| 亚洲女色av| 欧美国产精品va在线观看| 福利在线午夜| 日韩av在线网页| 国产三级自拍视频| 欧美视频在线一区| 国产成人精品网| 亚洲综合视频在线观看| 中文字幕美女视频| 久久精品视频网| 国产精品久久久久久在线观看| 麻豆成人av在线| 日韩欧美xxxx| 中文亚洲字幕| 日韩国产一级片| 亚洲情侣在线| 亚洲午夜激情| 欧美热在线视频精品999| 国产精品伊人日日| 免费观看亚洲天堂| 成人国产精品久久久久久亚洲| 欧美黑人粗大| 日韩av免费网站| 人人草在线视频| 久久久久久综合网天天| 成人区精品一区二区不卡| 色午夜这里只有精品| 成人p站proumb入口| 精品视频偷偷看在线观看| 亚洲精品国产一区二| 欧美一区永久视频免费观看| 中文字幕在线2019| 欧美专区日韩专区| 区一区二在线观看| 欧美日韩在线第一页| 精品久久免费视频| 亚洲一区二区精品3399| 黄色一级视频免费观看| 亚洲精品国产精华液| 一区二区成人免费视频| 亚洲精品国产一区二区精华液| 91高清免费看| 一区二区三区高清| 国产一级一级片| 亚洲成av人片在线观看| 日韩黄色精品视频| 舔着乳尖日韩一区| 99精品在线播放| 色88888久久久久久影院野外| 亚洲不卡视频在线观看| 日本高清成人免费播放| 日韩xxx视频| 精品视频1区2区3区| 一级黄在线观看| 91精品国产色综合久久ai换脸| 国产黄色高清视频| 精品欧美黑人一区二区三区| 黄色aaa毛片| 亚洲精品视频免费| 香蕉视频在线免费看| 另类色图亚洲色图| 超免费在线视频| 欧洲美女免费图片一区| 97成人超碰| 91夜夜揉人人捏人人添红杏| 在线播放一区二区精品视频| 动漫3d精品一区二区三区 | 日韩高清不卡av| 国产69精品久久app免费版| 色偷偷88888欧美精品久久久| 国产调教视频在线观看| 久久久在线视频| 久久久一本精品| 成人在线观看视频网站| 国产日韩三级| 亚洲毛片aa| 精品福利电影| av网站在线不卡| 国产成人在线视频播放| 国产人妻人伦精品1国产丝袜| 欧美国产精品专区| 久久久无码精品亚洲国产| 欧美日韩亚洲网| 91丨九色丨蝌蚪丨对白| 亚洲国产欧美一区二区三区久久| 国产黄在线观看| 欧美精品性视频| 韩漫成人漫画| 97免费资源站| 欧美日韩国产一区二区三区不卡 | 美女国产一区二区三区| 激情综合激情五月| 亚洲国产成人私人影院tom| 国产一级aa大片毛片| 日本韩国欧美一区| 丰满少妇被猛烈进入| 在线播放精品一区二区三区| 男男gaygays亚洲| 国产精品黄色影片导航在线观看| 综合成人在线| 亚洲欧洲日韩精品| 麻豆久久精品| 国产情侣久久久久aⅴ免费| 欧美国产一区二区在线观看| 中文字幕一区二区三区手机版| 欧美日韩一区二区三区四区五区| 人妻无码中文字幕免费视频蜜桃| 日韩视频精品在线| 怡红院成人在线| 精品乱码一区| 国产精品magnet| 污污视频网站在线| 国产欧美一区二区在线| 九九九在线观看| 欧美精品一区二区在线播放| 成人a在线视频免费观看| 国产精品老女人视频| 最新精品国偷自产在线| 97超碰在线人人| 国产成人av电影在线观看| 欧美精品日韩精品| 天天干免费视频| 欧美高清第一页| 成人在线啊v| 在线一区高清| 国产香蕉视频在线| 国产午夜亚洲精品不卡| 日韩黄色三级视频| 亚洲成人精品久久| 丝袜在线观看| 91精品婷婷国产综合久久蝌蚪| 四虎成人av| 牛夜精品久久久久久久| 国产丝袜在线精品| 秋霞精品一区二区三区| 日韩精品在线观看视频| 欧美激情护士| 精品久久久久久亚洲| 99精品热6080yy久久| 亚洲图片欧美另类| 亚洲成人综合网站| 人妻va精品va欧美va| 97久久精品人搡人人玩| 国产精品一区二区中文字幕 | 精品51国产黑色丝袜高跟鞋| 国产精品最新在线观看| 色天天久久综合婷婷女18| 欧美伦理片在线观看| 国产精品美女久久久久久久久| 在线播放成人av| 久久久久www| 精品一区二区三区中文字幕 | 日本а中文在线天堂| 免费成人看片网址| 日韩av中文字幕一区二区| 男人天堂资源网| 日韩欧美在线网站| 久久久精品网| 国产精品三区四区| 亚洲国产网站| 亚洲一级av无码毛片精品| 亚洲国产欧美在线| 婷婷丁香花五月天| 日韩av手机在线观看| 精品欧美激情在线观看| 中文字幕丰满乱码| 一二三区精品视频| 亚洲 小说区 图片区 都市| 日本不卡视频在线播放| 日韩久久综合| 国产成人强伦免费视频网站| 一区二区三区在线不卡| 香蕉视频黄在线观看| 国产成人精品一区二区三区| 第一sis亚洲原创| 日批视频在线看| 欧美性xxxxxx| 久草免费在线| 精品午夜一区二区| 精品制服美女丁香| 日韩黄色三级视频| 日韩在线视频中文字幕| 伊人精品综合| www.超碰com| 亚洲永久精品国产| 国产黄在线观看| www.成人av| 奇米四色…亚洲| 国产福利久久久| 一二美女精品欧洲| 国产精品自在| 我要看一级黄色大片| 女海盗2成人h版中文字幕| 国产精品亚洲不卡a| 水野朝阳av一区二区三区| 天天鲁一鲁摸一摸爽一爽| 亚洲精品美女久久| 国产一区二区高清在线| 黄色国产精品视频| 亚洲精品国产视频| 第一福利在线| 国产伦精品一区二区三区免费视频 | 精品国产网站在线观看|