电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java 二分查找算法的實現

瀏覽:8日期:2022-08-24 18:18:54

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

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

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

二分算法步驟描述

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

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

若相等,則查找成功

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

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

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

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

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

二分查找算法討論:

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

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

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

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

Java二分查找源碼

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 二分查找算法的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 高低温万能试验机-复合材料万能试验机-馥勒仪器| 螺旋叶片_螺旋叶片成型机_绞龙叶片_莱州源泽机械制造有限公司 | cnc精密加工_数控机械加工_非标平键定制生产厂家_扬州沃佳机械有限公司 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 垃圾清运公司_环卫保洁公司_市政道路保洁公司-华富环境 | VI设计-LOGO设计公司-品牌设计公司-包装设计公司-导视设计-杭州易象设计 | 精密线材测试仪-电线电缆检测仪-苏州欣硕电子科技有限公司 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 翅片管换热器「型号全」_厂家-淄博鑫科环保 | 铝合金电阻-无源谐波滤波器-上海稳达电讯设备厂 | 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | 恒温水槽与水浴锅-上海熙浩实业有限公司 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 爆炸冲击传感器-无线遥测传感器-航天星百科 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 | 合肥办公室装修 - 合肥工装公司 - 天思装饰| 求是网 - 思想建党 理论强党| 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 北京公寓出租网-北京酒店式公寓出租平台 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 船用泵,船用离心泵,船用喷射泵,泰州隆华船舶设备有限公司 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 楼承板-开口楼承板-闭口楼承板-无锡海逵 | 电镀电源整流器_高频电解电源_单脉双脉冲电源 - 东阳市旭东电子科技 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 |