二分搜索技術

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

分治法的基本思想:將一個規模為n的問題,分解為k個規模較小的子問題,這些子問題互相獨立且與原問題相同。遞歸的解這些子問題,然后將各個子問題的解合并得到原問題的解。

經典例子:二分搜索

算法基本思想:

1 將n個元素分成個數大致相同的兩半,取n/2與x進行比較。

2 如果找到,則終止,返回。

3 如果小于n/2,則在小半部分繼續查找。

4 如果大于n/2,則在大半部分繼續查找。

算法描述代碼:

#include <iostream>
using namespace std;template <class Type>
int BinarySearch(Type a[],const Type &x,int n){int left=0;int right = n-1;while(left<=right){int middle = (left+right)/2;if(x == middle)return middle;if(x > a[middle])left = middle+1;elseright = middle-1;}return -1;
}
int main()
{int num[10] = {0,9,8,7,6,5,4,3};int a;cout<<"輸入想要查找的數字:"<<endl;cin>>a;int find = BinarySearch(num,a,9);if(find!=-1)cout<<find<<endl;elsecout<<"找不到想要的結果"<<endl;return 0;
}

運行結果如下:

轉載于:https://my.oschina.net/u/204616/blog/545016

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251649.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251649.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251649.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據庫連接情況查詢

--sp_who 可以指定數據庫名&#xff0c;查詢指定數據庫的連接情況 sp_who go select DB_NAME(database_id) dbname, login_name, t1.session_id, t1.request_id, t2.status, t1.start_time, host_name from sys.dm_exec_requests t1inner join sys.dm_exec_sessions t2 on…

apachacxf項目使用@WebService報錯

首先去除已經導入的包那是因為我們要導入javaee的api,首先點擊最下面這個選擇自己電腦上的路徑然后就會自動導入上面的包,同時在jar庫上也會出現轉載于:https://www.cnblogs.com/fengnan/p/9311949.html

windows下redis 開機自啟動

1&#xff0c;在redis的目錄下執行&#xff08;執行后就作為windows服務了&#xff09;redis-server --service-install redis.windows.conf 2&#xff0c;安裝好后需要手動啟動redisredis-server --service-start 3&#xff0c;停止服務redis-server --service-stop 4&#xf…

Java中的屬性和方法

題目 實體類 測試類 轉載于:https://www.cnblogs.com/maoxiuying/p/9130361.html

《JavaScript》高級程序設計---第3章

3.基本概念 松散類型:所謂松散類型就是可以用來保存任何類型的數據。給未經聲明的變量賦值在嚴格模式下會導致拋出ReferenceError錯誤。Object本質上由一組無序的名值對組成。未經初始化的默認值就會取得undefined值。True和False都不是Boolean值&#xff0c;只是標識符。如果…

2019-06-13 Java學習日記之MySql

數據庫概述&#xff1a; 1、什么是數據庫&#xff0c;數據庫有什么作用&#xff1f; 數據庫就是存儲數據的倉庫&#xff0c;氣本質是一個文件系統&#xff0c;數據按照特定的格式將數據存儲起來&#xff0c;用戶可以對數據庫中的數據進行增加&#xff0c;修改&#xff0c;刪除及…

jquery 文件預覽功能

$(function() {$("#pic").click(function () {$("#upload").click(); //隱藏了input:file樣式后&#xff0c;點擊頭像就可以本地上傳$("#upload").on("change",function(){var objUrl getObjectURL(this.files[0]) ; //獲取圖片的路徑…

筆試小結---線程、進程

多進程:進程是資源分配的基本單位&#xff0c;它是程序執行時的一個實例。程序運行時&#xff0c;系統就會創建一個進程&#xff0c;并為它分配資源&#xff0c;然后把該進程放入進程就緒隊列&#xff0c;進程調度器選中它的時候就會為它分配CPU時間&#xff0c;程序開始真正運…

Spring security (一)架構框架-Component、Service、Filter分析

想要深入spring security的authentication &#xff08;身份驗證&#xff09;和access-control&#xff08;訪問權限控制&#xff09;工作流程&#xff0c;必須清楚spring security的主要技術點包括關鍵接口、類以及抽象類如何協同工作進行authentication 和access-control的實…

windows下手動安裝composer

1.下載compser.phar 地址 https://getcomposer.org/download/ 2.新建composer.bat 文件&#xff0c;寫入“php "%~dp0composer.phar" %*” 3.把composer.bat composer.phar 兩個文件放入 4.向環境變量里面寫人“;D:\phpStudy\php\php-5.4.45;D:\phpStudy\php\php-5…

寫更漂亮的javascript

用更合理的方式寫 JavaScript 目錄 聲明變量對象數組字符串函數箭頭函數模塊迭代器和生成器屬性變量提升比較運算符和等號代碼塊注釋空白逗號分號類型轉換命名規則聲明變量 1.1 使用let和const代替var 不會變的聲明用const//bad var $cat $(.cat)//good const $cat $(.cat)…

筆試小結---樹

平衡二叉樹(Balanced Binary Tree):又被稱為AVL樹,且具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1&#xff0c;并且左右兩個子樹都是一棵平衡二叉樹。 二叉搜索樹&#xff1a;是一顆二叉樹&#xff0c;可能為空;若非空,則滿足以下特征: 1.每個元素有一…

iOS 快速實現分頁界面的搭建

級別&#xff1a; ★★☆☆☆ 標簽&#xff1a;「iOS」「分頁」「QiPageMenuView」 作者&#xff1a; 沐靈洛 審校&#xff1a; QiShare團隊 iOS 快速實現分頁界面的搭建 項目中我們經常會遇到滾動分頁的設計效果&#xff0c;被用來對不同數據界面的展示進行分類。我們先可以來…

java中String的常用方法

java中String的常用方法 轉自&#xff1a;http://archer-zhou.iteye.com/blog/443864 java中String的常用方法1、length() 字符串的長度例&#xff1a;char chars[]{a,b.c};String snew String(chars);int lens.length();2、charAt() 截取一個字符例&#xff1a;char ch;ch&quo…

筆試小結---非對稱加密算法

非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey).公開密鑰和私有密鑰是一對,如果公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰進行加密,那么只有用對應的公開密鑰才能解密. 非對稱加密算法的保密性比較好,它消除了最終用戶交換…

登錄令牌 Token 介紹

Token值介紹 token 值: 登錄令牌.利用 token 值來判斷用戶的登錄狀態.類似于 MD5 加密之后的長字符串. 用戶登錄成功之后,在后端(服務器端)會根據用戶信息生成一個唯一的值.這個值就是 token 值. 基本使用: 在服務器端(數據庫)會保存這個 token 值,以后利用這個 token 值來檢索…

java-number

通常&#xff0c;當我使用number類型的時候&#xff0c;我們可以使用原始數據類型例如byte&#xff0c;int,long,double等 int i 5000; float b 13.65; double m 0xaf; 所有包裝類&#xff08;整型&#xff0c;長型&#xff0c;字節型&#xff0c;雙精度型&#xff0c;浮點型&a…

您的瀏覽器沒有獲得Java Virtual Machine(JVM)支持。可能由于沒有安裝JVM或者已安裝但是沒有啟用。請安裝JVM1.5或者以上版本,如果已安裝則啟用它。...

您的瀏覽器沒有獲得Java Virtual Machine(JVM)支持。可能由于沒有安裝JVM或者已安裝但是沒有啟用。請安裝JVM1.5或者以上版本&#xff0c;如果已安裝則啟用它。 https://www.java.com/zh_CN/download/faq/remove_olderversions.xml https://jingyan.baidu.com/article/6d704a13…

指令定義

restict&#xff1a;它告訴AngularJS這個指令在DOM中可以以何種形式被聲明。 E(元素&#xff09; <my-directive> </mydirective>A(屬性) <div my-directive“expression”> </div>C(類名) <div class“my-directive:expression;”> </div>…

MyBatis學習總結(9)——使用MyBatis Generator自動創建代碼

2019獨角獸企業重金招聘Python工程師標準>>> 由于MyBatis屬于一種半自動的ORM框架&#xff0c;所以主要的工作就是配置Mapping映射文件&#xff0c;但是由于手寫映射文件很容易出錯&#xff0c;所以可利用MyBatis生成器自動生成實體類、DAO接口和Mapping映射文件。這…