java實現二分查詢
1.二分查詢有個前提,就是陣列必須是有序的,而且是從小到大排序
2.先定義一個有序陣列:
int[] nums={1,3,4,5,6,8,9,11}
3. 下面就是來看二分查詢原理
設定三個下標:
左下標 left=0;
右邊下標right=nums.length-1
中間下標 mid=0;
如上圖,我們解讀依稀查詢過程
下面是具體程式碼:
int x=5; //x為要查詢的數 while(left<=right){ mid=(right-left)/2+left; //這樣寫可以避免資料溢位 if(nums[mid]>x){ right=mid-1; }else if(nums[mid]<x){ left=mid+1; }else{ System.out.println("找到了"); break; } } if(left>right){ System.out.println("找不到"); }
相關推薦
java實現二分查詢演算法,兩種方式實現,非遞迴和遞迴
java實現二分查詢演算法 1、概念 2、前提 3、思想 4、過程 4、複雜度 5、實現方式 1. 非遞迴方式 2. 遞迴方式
java——實現二分查詢法
二分查詢又稱折半查詢,它是一種效率較高的查詢方法。 折半查詢的演算法思想是將數列按有序化(遞增或遞減)排列,查詢過程中採用跳躍式方式查詢,即先以有序數列的中點位置為比較物件,如果要找的元素值小 於該中點元素,則將待查序列縮小為左半部分,否則為右半部分。通過一次比較,將查詢區間縮小一半。 折半
java實現二分查詢
1.二分查詢有個前提,就是陣列必須是有序的,而且是從小到大排序 2.先定義一個有序陣列: int[] nums={1,3,4,5,6,8,9,11} 3. 下面就是來看二分查詢原理 設定三個下標: 左下標 left=0; 右邊下標right=nums.length
java實現二分查詢-兩種方式
二分查詢是一種查詢效率非常高的查詢演算法。又稱折半查詢。 起初在資料結構中學習遞迴時實現二分查詢,實際上不用遞迴也可以實現,畢竟遞迴是需要開闢額外的空間的來輔助查詢。本文就介紹兩種方法 二分查詢演算法思想 有序的序列,每次都是以序列的中間位置的數來與待查詢的關鍵字進行比
java 實現二分查詢法
/** * 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。 【二分查詢要求】:1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。 * @author Administrator * */ public class BinarySearch { p
Java 實現二分查詢\折半查詢(速度快的查詢有序列表)
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。 該演算法要求: 1、 必須採用順序儲存結構。 2、 必須按關鍵
Java實現二分查詢法
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按升序排列,將表
Java如何在命令列讀取引數 [ 遞迴法實現二分查詢 ]
目的:用Java編寫了一個遞迴實現二分查詢(BinarySearch)的程式,希望能夠在命令列執行:讀取鍵盤輸入的一個整數作為輸入引數key(即 所查詢的數),輸出每次遞迴呼叫二分查詢時的中間數,以及查詢結果(key值在陣列中的位置)。 注:被查詢陣列我設為 int[ ] a = { 0, 1,
Java(二分查詢演算法實現,分別使用遞迴和非遞迴方式)
public class BinarySearch { private int[] array; private int index; private int min; private int max; public BinarySearch(int[]
JAVA實現二分法查詢並輸出每一趟查詢的結果
public class Binary { public static void main(String[] args) { int[] a={1,3,4,5,6,7,8,9,10,22,44,55,66,77,88,99}; int result=find(
JAVA:實現二分查詢
應用 while迴圈 public static int search(int[]arr,int num){ int lower=0,upper=arr.length; int mid=0; while (arr[mid]!=num){
java實現順序查詢、二分查詢、雜湊表查詢、二叉排序樹查詢
順序查詢、二分查詢、雜湊表查詢、二叉排序樹查詢這幾種查詢演算法是面試中常被問到的幾種演算法。 1. 順序查詢 對於陣列,按順序比較給定的值,時間複雜度0(n),,以下是實現: public static int Linear_Search(int[] data, i
C語言經典演算法(九)——遞迴實現二分查詢的兩種方法
後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現二分查詢演算法 1、 遞迴實現二分查詢 <1> 題目描述:針對資料,進行二分查詢(要求:資料的排列有序) <2> 方法一:概念法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現
JAVA之二分查詢
陣列中查詢元素的方式有兩種:1、基本查詢:適用於陣列元素無序 &nb
python3 遞迴實現二分查詢, 區分邊界資訊, 複雜度O(log(n)), 大概能算到10^7規模資料
def binarySearch(arr, l, r, target): #[l,n] 前閉後閉範圍內查詢target #如果不在裡面 if (target < arr[l] or target > arr[r]): return -1
用Python實現二分查詢
二分查詢(分遞迴和非遞迴) def binary_search(alist, item): """二分查詢,遞迴""" n = len(alist) if n > 0: mid = n//2 if alist[mid] ==
Java實現快速查詢某個範圍內的所有素數
Java實現快速查詢某個範圍內的所有素數 前言 定義法 篩選法 篩選優化法 後記 前言 素數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。定義非常簡單,但是它卻難以定量化,研究起來非常複雜,有興趣的可以買本研究
如何用Python語言實現二分查詢
二分查詢: 度娘給的解釋:二分查詢也稱折半查詢(Binary Search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。 在對一個集合進行二分查詢之前,需要保證的是指容器中的資料是按照有序排列的,這個是硬性要求,因為要是資料不
Java基礎-----二分查詢
如果陣列是無序的不能使用二分查詢。 package StringBufferPackage; public class Demo8_getIndex { public static void main(String[] args) { int[] arr = {11,22,3
Java版二分查詢
簡介 Java版陣列二分查詢實現 public class BinaryFind { public static void main(String[] args){ int[] arr=new int[]{5,3,6,7,9,8,4,