本篇內(nèi)容主要講解“二分查找的原理和用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“二分查找的原理和用法”吧!
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的寬城網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須采用順序存儲結(jié)構(gòu),而且表中元素按關(guān)鍵字有序排列
必須按照“大到小”或“小到大”的順序存儲的數(shù)組列表結(jié)構(gòu)
列表進行折半, 取中間元素與目標(biāo)值進行比較,判斷后決定舍去前半段或后半段,最終找到相等值
定義數(shù)組長度12,存儲1-12的整數(shù),的查找過程示意圖
找到值為3都索引
找到值為13所在下標(biāo)
找到值為11所在下標(biāo)
public int binarySearch(int[] arrays, int searchTag, int left, int right){ int mid = (right + left) / 2; if (mid < 0 || mid >= arras.length){ return -1; } if (arrays[mid] == searchTag){ return mid; } if (arrays[mid] > searchTag){ right = mid; } else if (arrays[mid] < searchTag){ left = mid + 1; } if (left >= right){ return -1; } return binarySearch(arrays, searchTag, left, right); }
public int binarySearch(int[] arrays, int searchTag){ int right = arrays.length, left = 0; while (left < right){ int mod = (right + left) / 2; if (arrays[mid] == searchTag){ return mid; } else if (arrays[mid] > searchTag){ right = mid; } else { left = mid + 1; } } return -1; }
到此,相信大家對“二分查找的原理和用法”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!