1. 程式人生 > >簡單二分查詢模板(查詢)

簡單二分查詢模板(查詢)

 1 # include <stdio.h>
 2 
 3 int search(int a[], int n, int v)    //這個好像是效率最高的
 4 {
 5     int left = -1, right = n, middle;
 6     while(left+1 != right)
 7     {
 8         middle = left + (right-left) / 2;
 9         if(a[middle] < v)
10             left = middle;
11         else
12             right = middle;
13 } 14 if(right >= n || a[right] != v) 15 right = -1; 16 return right; 17 } 18 19 int search1(int a[], int n, int v) 20 { 21 int left = 0, right = n-1, middle; 22 while(left <= right) 23 { 24 middle = (left+right) / 2; 25 if(a[middle] > v) 26 right = middle - 1
; 27 else if(a[middle] < v) 28 left = middle +1; 29 else 30 return middle; 31 } 32 return -1; 33 } 34 35 int search2(int a[], int n, int v) 36 { 37 int left = 0, right = n, middle; 38 while(left < right) 39 { 40 middle = (right + left) / 2
; 41 if(a[middle] > v) 42 right = middle; 43 else if(a[middle] < v) 44 left = middle + 1; 45 else 46 return middle; 47 } 48 return -1; 49 } 50 51 int a[1000000]; 52 int main(void) 53 { 54 int n, i, t, ans; 55 while(~scanf("%d", &n)) 56 { 57 for(i = 0; i < n; i++) 58 scanf("%d", &a[i]); 59 scanf("%d", &t); 60 ans = search(a, n, t); 61 if(ans <= 0) 62 printf("NO\n"); 63 else 64 printf("YES\n"); 65 } 66 67 return 0; 68 }

相關推薦

簡單二分查詢模板查詢

1 # include <stdio.h> 2 3 int search(int a[], int n, int v) //這個好像是效率最高的 4 { 5 int left = -1, right = n, middle; 6 while(left+1 !=

二分查詢

// 二分查詢 public static int helf() { int a[] = { 21, 23, 30, 35, 36, 41, 42, 45, 55, 59, 72 }; int low = 0; int num =

簡單的折半查詢演算法Java

折半查詢的優點是能夠最大減少查詢的時間複雜度,但也對查詢的目標陣列或集合提出一定要求,即陣列或集合中的數字排序必須是有序的,否則不能用折半查詢,只能用遍歷。以下是簡單的折半查詢演算法: public class test { public static void main

二分查詢演算法python

二分查詢法 函式功能: 傳入一個列表(arr)和要查詢的元素(num),返回該元素索引 def main(arr, num): '''二分查詢演算法 找到元素則返回索引 找不到則返回字串''' i = 0 #列表首索引 j = len(arr) - 1 #列表

用python實現二叉搜尋樹/查詢樹的簡單實現及驗證判斷棧中根序遍歷

基於棧的中根序深度優先遍歷判斷法(天然排序,每次比上一個值大即可)。由搜尋樹的性質推得中根序深度遍歷為一個從小到大的有序序列。所以根據這一性質事情就好辦了,只要在遍歷過程中加入與前一值得比較判斷即能達到目的(複雜度O(n),推薦演算法)。程式碼如下:def midorder(

第2章 遞迴與分治策略,二分搜尋技術查詢不成功時,返回區間位置

當要查詢的數x不在有序陣列a中時,返回第一個大於x的數的位置或第一個小於x的數的位置 lowend,midend,highend表示查詢結束時各遊標的值,low,mid,high表示使查詢結束的最後一次操作時,各遊標的值。 查詢結束的條件是lowend>highe

java查詢演算法--二分遞迴查詢

二分查詢的前提是陣列必須是已經排好序的,才能對中位數進行比較後選擇在哪邊查詢。 //遞迴查詢(recursion): // 二分查詢的前提是陣列必須是已經排好序的,才能對中位數進行比較後選擇在哪邊

SQL常用查詢模板個人在公司最常用的

sql server t-sql高階查詢 新增欄位: alter table [表名] add [欄位名] nvarchar (50) null alter table [表名] alter column [欄位名] varchar(100) not

查詢演算法二分搜尋法

二分搜尋法適用於有序的陣列,比如[1,3,5,7,9]這樣的陣列適合用二分搜尋法查詢元素。 假設存在一個數組為從小到大順序排序。 二分思想: (1)首先,我們視陣列所有元素為當前查詢範圍 (2)拿當前查詢範圍中間的那個元素與要查元素比較,如果值想等,則查詢成功,推出查詢任務

MySQL索引原理及慢查詢優化

範圍 很難 等於 right 事件 原理 插入 jpg 個人網站 轉自:美團點評技術團隊http://tech.meituan.com/mysql-index.html MySQL憑借著出色的性能、低廉的成本、豐富的資源,已經成為絕大多數互聯網公司的首選關系型數據庫。雖然性

Hibernate查詢方式

sof qbc nbsp ros ron 客戶 多對多 它的 記錄 -----------------siwuxie095 Hibernate 查詢方式 1、對象導航查詢 根據已經加載的對象,導航到它的

SQL數據查詢語句

delete 紅色 cnblogs col mage 列名 http font 根據 本文所用數據庫為db_Test,數據表為Employee 一.SELECT語句基本結構 語句語法簡單歸納為: SELECT select_list [INTO new_table_name

ci框架自定義數據庫查詢名稱方法

cti 子目錄 ons pos 傳遞 sele 傳遞參數 ren 基礎 適合剛接觸PHP和ci框架的人,本人也是小白 原因:官方給的數據庫查詢方法可能不利於記憶使用,官方給的一些方法只能進行基礎查詢,每次復合查詢都需要拼接條件,自己定義定義方法直接調用方法即可 操作步驟:

數據庫查詢語言DQL

分組 數據庫 去重 列名 .com 條件語句 desc esc 多表 1.條件查詢 2.排序查詢 order by 列名 ASC (升序) DESC(降序) 3.聚合函數 (ps:條件語句使用having) 4.分組查詢 5.多表查詢 6.自連接查詢 7.子查詢

數據庫多表查詢總結搬運

sha value inner 沒有 復制 多表查詢 空行 很多 union all 1、Union UNION 操作符用於合並兩個或多個 SELECT 語句的結果集。 UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重復行而派

pt-query-digest詳解慢查詢日誌

ttr tool 並發數 目的 dig 文件中 格式 general ember 一、簡介 pt-query-digest是用於分析mysql慢查詢的一個工具,它可以分析binlog、General log、slowlog,也可以通過SHOWPROCESSLIST或者通過t

JDBC資料庫連線池連線資料庫及資料庫操作DAO層設計通用更新及查詢方法

上篇文章主要介紹了通過資料庫連線池連線資料庫,然後設計了對資料庫通用更新和查詢方法,本篇文章主要通過例項介紹上篇文章定義的對資料庫操作的幾個方法的使用:     首先我們先在資料庫建立一個學生資訊表Student欄位如圖: 建立好表將配置檔案的資訊改好然後需要建立一

JDBC資料庫連線池連線資料庫及資料庫操作DAO層設計通用更新及查詢方法

該篇文章介紹了資料庫連線池獲取資料庫連線以及資料庫操作的基本使用,然後主要提供了java專案案例中dao層的一種設計,利用反射的原理定義了通用的查詢方法可以對應所有的表和例項。文章中的每段程式碼都提供了詳細的註釋及邏輯步驟 首先匯入資料庫連線的所需要的jar包:    

mysql查詢當天今天的資料

--------------查"當天"的資料----------------- SELECT ew.orderid, ew.carid, ew.userid, ew.`status`, ew.reserve

Delphi 文字查詢函式

一:function Pos(Substr: string; S: string): Integer; 註解:該函式是查詢元素第一次出現的位置。  1....  框圖:     2 .....程