日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【设计和算法分析】3、二进制搜索

發(fā)布時(shí)間:2025/4/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计和算法分析】3、二进制搜索 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/** * 書:《設(shè)計(jì)和算法分析》 * 特征:二進(jìn)制搜索 * 1、建立a[0:n-1]是一排的陣列已經(jīng)好序。請重寫二進(jìn)制搜索算法,因此,搜索元素時(shí)x不用時(shí),該陣列。返回小于x最大的元素 * S檔I而超過x最小的元素位置j。在數(shù)組中的時(shí)候。I和j同樣,均為x在數(shù)組中的位置 * 文件:lesson3.cpp * 時(shí)間:2014年11月4日19:50:20 * 作者:cutter_point */#include <iostream>using namespace std;//這里a是用來搜索的序列,n是序列里面數(shù)據(jù)的個(gè)數(shù),x是要找的數(shù),i和j是用來找位置的 bool erFen(int *a, int n, int x, int& i, int& j) //i和j是兩個(gè)引用 {int left = 0; //查找的起始點(diǎn)int right = n - 1; //查找的終點(diǎn)while (left < right) //僅僅要還有數(shù)據(jù)沒有被遍歷,那就一直循環(huán)一直到找到,或者沒有{int mid = (left + right) / 2; //二分法的精髓,一分為二if (x == a[mid]) //從中間開始比較{i = j = mid; //假設(shè)正好是中間的那個(gè)數(shù)的話,把位置賦值給i,jcout << "位置是:" << mid+1<<endl;return true;}//假設(shè)不是中間那個(gè)地方的話if (x > a[mid]) //因?yàn)槭且呀?jīng)排好序了{(lán)//得到當(dāng)前小于x的元素的位置j = mid;left = mid + 1; //把后半部分作為新的起點(diǎn)}else{//得到當(dāng)前大于x的元素位置i = mid;right = mid - 1; //把前半部分作為新的數(shù)列}}//假設(shè)沒有找到//i = right;//j = left;cout << "位置是:" << j+1 << " 和 " << i+1 << "之間" << endl;return false; }int main() {int n, x, i=0, j=0;n = 0;cout << "依次輸入數(shù)列的長度n,要找的整數(shù)x(中間用空格隔開)" << endl;cin >> n >> x;int *a;a = new int[n];cout << "輸入數(shù)組數(shù)據(jù):" << endl;for (int i = 0; i < n; ++i){cin >> a[i];}erFen(a, n, x, i, j); //i和j有兩個(gè)引用getchar();return 0; }

版權(quán)聲明:本文博客原創(chuàng)文章,博客,未經(jīng)同意,不得轉(zhuǎn)載。

轉(zhuǎn)載于:https://www.cnblogs.com/blfshiye/p/4752991.html

總結(jié)

以上是生活随笔為你收集整理的【设计和算法分析】3、二进制搜索的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。