折半查詢(二分查詢)
在整形有序陣列中查詢想要的數字,找到了返回下標,找不到返回-1.
#include<stdio.h> int main(){ double arr[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; int to_find = 7; int left = 0; int right = sizeof(arr) / sizeof(arr[0]) - 1; int mid = 0; while (left <= right){ mid = (left + right) / 2; if (to_find < arr[mid]){ right = mid - 1; } else if (to_find>arr[mid]){ left = mid + 1; } else{ break; } }if (left<=right){ printf("%d\n", mid); } else{ printf("-1"); } system("pause"); return(0); }
相關推薦
真題2001 折半查詢(二分查詢)
題目:折半查詢(二分查詢),她僅適合有序的順序表。 基本思想:首先將給定值key與表中中間位置元素的關鍵字比較,若想等,則查詢成功,返回該元素的儲存位置;若不等則查詢元素只能在中間元素以外的前半部分或者後半部分。然後在縮小的範圍內繼續進行同樣的查詢,如此重複直到找到為止,或者確定表中沒有所需
折半查詢(二分查詢)
在整形有序陣列中查詢想要的數字,找到了返回下標,找不到返回-1. #include<stdio.h> int main(){ double arr[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; int to_f
【C/C++】折半查詢(二分查詢)
一、二分查詢 在C和C++裡,二分查詢是針對有序陣列所用的一種快速查詢元素的方法。 二、二分查詢的條件以及優缺點 條件:針對有序陣列(元素從小到大或從大到小) 優點:查詢速度較快,時間複雜度為O(n) 缺點:有硬性條件的限制,而且即使查到後,插入與刪除困難。 三、圖片詳解
C語言實現折半查詢(二分查詢)的演算法
編寫一個程式exp9-2.cpp,輸出在順序表(1,2,3,4,5,6,7,8,9,10)中採用折半查詢方法查詢關鍵字9的過程。 //檔名:exp9-2.cpp #include <stdio.h> #define MAXL 100 //定義表中最多記錄
折半查詢(二分搜尋)的應用和技巧全面總結
折半查詢應該算是演算法中比較簡單常見,但卻很實用的方法之一了,又叫做二分搜尋,其應用比較廣泛,可以用於排序陣列中元素的查詢,複雜度僅為log(N),也可以用於有序陣列中插入元素等等,一般而言針對排序陣列的一些演算法都會活多或少的用到折半查詢活折半查詢的思想,折半查詢的實現主
查詢-折半查詢(二分查詢)
折半查詢 折半查詢,也稱為二分查詢。其要求是資料是有序的,即表中元素按關鍵字有序。 比如有序表是遞增有序的。首先取這表中的中間的資料與關鍵值(給定值key)比較的關係。若key>表的中間值,則說明key存在於表的中間值的右側。因此,中間值右側的區間又要取出中間值再與
【暑假集訓筆記】二分查詢(二分查詢數值+二分64種類型+最大化最小值+最小化最大值+最大化平均值模型)
//二分查詢總結:由於本人二分常年寫成死迴圈 /* 簡介:二分查詢 == 折半查詢 要求:線性表,有序表(注意升序與降序) 思想: 設查詢區間[L,R] 取中點 mid = (L+R)/2 判定mid是否符合要求:(如何判斷:bool check(int mid); )
C程式設計--查詢(二分法查詢/折半查詢)
二分法查詢/折半查詢 說明:折半搜尋(half-interval search),也稱二分搜尋(binary search)、對數搜尋(logarithmic search),是一種在有序陣列中查詢某一特定元素的搜尋演算法。 搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢
猜數字小遊戲+折半查詢法(二分法)+三次密碼輸入+字母大小寫轉換
猜數字小遊戲: #include<stdio.h> #include<time.h> #include<stdlib.h> /* 猜數字小遊戲 */ int menu() { printf("**********1.開始遊戲**********\n
用c語言折半查詢演算法(二分查詢)
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好,佔用系統記憶體較少;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查
折半查詢法(二分法)
折半查詢法:折半查詢法是效率較高的一種查詢方法。假設有已經按照從小到大的順序排列好的五個整數a[0]~a[4],要查詢的數是X,其基本思想是:設查詢資料的範圍下限為l=1,上限為h=5,求中點m=(l+h)/2,用X與中點元素 a[m]比較,若X等於a[m],即找到,停止查詢
(java)leetcode852 山脈陣列的封頂索引(二分查詢法找出陣列中最大值的下標)(Peak Index in a Mountain Array)
題目描述: 我們把符合下列屬性的陣列 A 稱作山脈: A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] < A
js 二分查詢(Binary Search)
陣列二分查詢: 1.先對陣列排序,從小到大排序 2.定義兩個指標,左指標(left)指向陣列第一個元素,右指標(right)指向陣列最後一個元素 3.取陣列中間(nums[mid])的項和目標值(target)比較 4.如果中值小於目標值,說明目標值在後半陣列,將左指標(left)指向nums[mid
C#LeetCode刷題之#704-二分查詢(Binary Search)
問題 給定一個 n 個元素有序的(升序)整型陣列 nums 和一個目標值 target ,寫一個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 -1。 輸入: nums = [-1,0,3,5,9,12], target = 9 輸出:
資料結構——排序與查詢(5)——折半查詢(C++實現)法
順序查詢 順序查詢,是一種最直觀的查詢方式。原理閒蕩簡單就是我們正常思維的查詢,從給定的序列出發,依次檢查序列中的每一個專案是否為我們給定的關鍵字。是則查詢成功,否則查詢失敗。 bool searchByOrder(vecter<int> vec){ for(int
第十四周專案1線性表的折半查詢(迴圈法)
/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年12月2日 * 版本號:VC6.0 * 問題描述:線性表的折半查詢(迴圈法) * 輸入描述:無 * 程式輸出:圖
二分查詢(binary search)
二分查詢(binary search) 二分查詢對於學過資料結構或者演算法的人來說,應該是非常熟悉的。其基本思想是:比較目標(target)和中間關鍵字的大小關係,如果二者相等,則查詢完畢;如果二者不等,則可以根據二者的大小關係,將查詢的範圍減半。 雖然二分查詢的演算法很簡單,但是對
leetcode的python實現 刷題筆記74:搜尋二維矩陣(二分查詢的思想)
編寫一個高效的演算法來判斷 m x n 矩陣中,是否存在一個目標值。該矩陣具有如下特性: 每行中的整數從左到右按升序排列。 每行的第一個整數大於前一行的最後一個整數。 示例 1: 輸入: matrix = [ [1,
【POJ】2110Mountain Walking(二分查詢+BFS)
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4982 Accepted:&nb
Java基礎練習02--二分查詢(Binary Search)
二分查詢也稱折半查詢(Binary Search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列