資料結構與演算法--二分查詢法
/**
* 二分搜尋首先要保證陣列有序
* @param arr
* @param val
*/
function binarySearch(arr, val) {
let low = 0;
let high = arr.length - 1;
// 需要控制好迴圈變數
// 在 [low, high] 之間尋找
while (low <= high) {
let mid = Math.floor(low + high);
if (arr[mid] === val) {
return mid;
} else if (arr[mid] > val) {
high = mid - 1 ;
} else {
low = mid + 1;
}
}
}
const arr = [11, 12, 13, 14, 15, 16];
console.log('search value of 15: ', binarySearch(arr, 15));
相關推薦
資料結構與演算法--二分查詢法
/** * 二分搜尋首先要保證陣列有序 * @param arr * @param val */ function binarySearch(arr, val) { let low = 0; let high = arr.length - 1;
資料結構與演算法 二分法查詢【Python與C】的實現
程式碼如下: Python: def ErFen(List ,Number ,Len): left = 0 high = Len - 1 while left <= high: mid = (left + high)//2
19_資料結構與演算法_查詢樹_Python實現
#Created By: Chen Da #構造一個樹節點的類 #以此作為BinarySearchTree的引用 class TreeNode(object): def __init__(self,key,value,left=None,right=None,parent=None):
【資料結構與演算法】回溯法解決裝載問題
回溯法解決裝載問題(約束函式優化) 解題思想 遍歷各元素,若cw+w[t]<=c(即船可以裝下),則進入左子樹,w[t]標記為1,再進行遞迴,若cw+r>bestw(即當前節點的右子樹包含最優解的可能),則進入右子樹,否則,則不遍歷右子樹。 完整程式碼實現如下 p
【資料結構與演算法】回溯法解決N皇后問題,java程式碼實現
N皇后問題 問題描述 在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法,這稱為八皇后問題。 延伸一下,便為N皇后問題。 核心思想 解決N皇后問題有兩個關鍵點。一是如何進行放置棋子,二是如何驗證棋子是否符合
資料結構與演算法--蠻力法之氣泡排序與時間複雜度分析(java)
蠻力法 蠻力法又稱窮舉法和列舉法,是一種簡單直接地解決問題的方法,常常直接基於問題的描述,所以蠻力法也是最容易應用的方法。但是蠻力法所設計的演算法時間特性往往是比較低的,典型的指數時間演算法一般都是通過蠻力
資料結構與演算法23-查詢
查詢概念 查詢表(Search Table)是由同一型別的資料元素(或記錄)構成的集合。 關鍵字(Key)是資料元素中某個資料的值。又稱為鍵值。可以標識一個記錄的某個資料項(欄位),我們稱為關鍵碼。 若此關鍵字可以唯一地標識一個記錄,則稱此關鍵字為主關鍵字(Prim
資料結構與演算法:查詢演算法
查詢演算法 查詢( Search)是指從一批記錄中找出滿足指定條件的某一記錄的過程,查詢又稱為檢索。查詢演算法廣泛應用於各類應用程式中。因此,一個有效的查詢演算法往往可以大大提高程式的執行效率。在實際應用中,資料的型別千變萬化,每條資料項往往包含多個數據域。但是,在執行查詢操作時,往往只是指定一個或幾個域的值
java版資料結構與演算法—遞迴(二分法查詢)
package com.zoujc.triangle; /** * 遞迴:二分查詢 */ class OrdArray { private int[] a; private int nElems; public OrdArray(int max){
修煉內功---資料結構與演算法14---二分法查詢
所謂二分查詢,針對的是一個有序的資料集合(這點很重要),查詢思想有點類似分治思想。每次都通過跟區間的中間元素對比,將待查詢的區間縮小為之前的一半,直到找到要查詢的元素,或者區間被縮小為 0。注意到二分查詢針對的必須是已經排序過的有序陣列,否則不能使用該演算法。 <?php functio
資料結構與演算法基礎-01-二分查詢
二分查詢 注:本題目源自《浙江大學-資料結構》課程,題目要求實現二分查詢演算法。 函式介面定義 Position BinarySearch( List L, ElementType X ); 其中List結構定義如下: typedef int Position; typ
資料結構與演算法基礎-02-二分查詢-實踐
演算法中查詢演算法和排序演算法可謂是最重要的兩種演算法,是其他高階演算法的基礎。在此係列文章中,將逐一學習和總結這兩種基礎演算法中常見的演算法實現。首先,第一種演算法——二分(折半)查詢的學習和練習。 1、概念 二分查詢,是逐次將查詢範圍折半,縮小搜尋的範圍,直到找到那個需要的結果。
資料結構與演算法之美專欄學習筆記-二分查詢(下)
四種常見的二分查詢變形問題 查詢第一個值等於給定值的元素 //查詢第一個等於給定值的元素 public static int BSearch2(int[] a, int n, int value){ //定義陣列頭尾索引 int low = 0, high = n - 1;
《資料結構與演算法之美》專欄閱讀筆記4——二分查詢
找呀找呀找朋友 文章目錄 1、二分查詢 2、變形的二分查詢 2.1、查詢第一個、最後一個值等於給定值的元素 2.2、查詢第一個大於等於、最後一個小於等於給定值
[PTA] 資料結構與演算法題目集 6-10 二分查詢
Position BinarySearch(List L, ElementType X) { int beg = 1; int end = L->Last; while (beg <= end) { int mid = (beg + end) / 2
資料結構與演算法學習--二分查詢
二分查詢(Binary Search)演算法,也叫折半查詢演算法。二分查詢針對的時一個有序的資料集合,查詢思想有點類似於分治。每次都是通過和區間的中間元素進行比較,將待查區縮小為原來的一半,直到將元素找到或者區間縮小為0。 我們可以通過2種方式實現:遞迴和非遞迴。 /**********
PTA資料結構與演算法題目集(中文)4-10 二分查詢 (20分)
本題要求實現二分查詢演算法。 函式介面定義: Position BinarySearch( List Tbl, ElementType K ); 其中List結構定義如下: typedef int Position; typedef struct LNode *L
資料結構與演算法題目集(中文)4-10 二分查詢 (20分)
4-10 二分查詢 (20分) 本題要求實現二分查詢演算法。 函式介面定義: Position BinarySearch( List Tbl, ElementType K ); 其中Li
修煉內功---資料結構與演算法16---二分法變形2
在給定排序序列中查詢第一個大於等於給定值的元素 所不同的是判斷節點不一樣了,我們之前的需求都是查詢等於給定值 現在變成了大於等於給定值,所以我們要在 $nums[$mid] >= $num 這個判斷條件上做文章 思路還是和之前兩個變形版本類似 當 $mid 已經是最左邊的元素,
修煉內功---資料結構與演算法15---二分法變形1
除了正常的二分查詢,還有很多二分查詢的變形版本 符合標準的二分查詢條件的序列一般是比較理想的情況,如果要查詢的元素在序列中有多個怎麼辦? 在一個給定排序序列中查詢第一個等於給定值的元素 其實關鍵節點就在於在序列中找到值等於待查詢元素值時的處理 如果此時 $mid 位置已經到了序列的最