C語(yǔ)言實(shí)現(xiàn)順序表的順序查找和折半查找
更新時(shí)間:2020年11月01日 12:14:39 作者:Andrelia20171760
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)順序表的順序查找和折半查找,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)順序表的順序查找和折半查找的具體代碼,供大家參考,具體內(nèi)容如下
順序查找:
#include <iostream> using namespace std; int SeqSearch(int r[],int n,int k) { r[0]=k;//下標(biāo)0用作哨兵存放要查詢的數(shù) int i=n; while(r[i]!=k)//不用判斷下標(biāo)i是否越界 { i--; } return i; } int main() { int n; cout<<"請(qǐng)輸入數(shù)組元素個(gè)數(shù):"<<endl; cin>>n; int a[n+1]; cout<<"請(qǐng)輸入數(shù)組元素:"<<endl; for(int i=1;i<=n;i++) { cin>>a[i]; } int k; cout<<"請(qǐng)輸入要查詢的數(shù):"<<endl; cin>>k; for(int i=1;i<=n;i++) { cout<<a[i]<<" "; } cout<<endl; cout<<"該數(shù)在數(shù)組中的位置為:"; cout<<SeqSearch(a,n,k); return 0; }
折半查找:
#include<iostream> using namespace std; int BinSearch1(int r[],int n,int k)//非遞歸 { int low=1,high=n;//設(shè)置查找區(qū)間 while(low<=high)//如果區(qū)間存在 { int mid=(low+high)/2; if(k<r[mid])high=mid-1;//查找在左半?yún)^(qū)進(jìn)行,回到while那一步 else if(k>r[mid])low=mid+1; else return mid; } return 0;//如果區(qū)間不存在,則返回0,查找失敗 } int BinSearch2(int r[],int low,int high,int k)//遞歸 { int mid=(low+high)/2; if(low>high) return 0; else { if(k<r[mid])BinSearch2(r,low,mid-1,k); else if(k>r[mid])BinSearch2(r,mid+1,high,k); else return mid; } } int main() { int n; cout<<"請(qǐng)輸入數(shù)組元素個(gè)數(shù):"; cout<<endl; cin>>n; int a[n+1]; cout<<"請(qǐng)輸入數(shù)組元素:"; cout<<endl; for(int i=1;i<=n;i++) { cin>>a[i]; } cout<<"請(qǐng)輸入要查找的數(shù):"; cout<<endl; int k; cin>>k; cout<<"該數(shù)在數(shù)組中的位置是:"<<endl; cout<<BinSearch1(a,n,k);cout<<endl; cout<<BinSearch2(a,1,n,k); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)堆的簡(jiǎn)單操作的示例代碼
堆(heap)是計(jì)算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱。堆通常是一個(gè)可以被看做一棵樹的數(shù)組對(duì)象。本文介紹了C語(yǔ)言中堆的一些簡(jiǎn)單操作,需要的可以參考一下2022-11-11c++中拷貝構(gòu)造函數(shù)的參數(shù)類型必須是引用
如果拷貝構(gòu)造函數(shù)中的參數(shù)不是一個(gè)引用,即形如CClass(const CClass c_class),那么就相當(dāng)于采用了傳值的方式(pass-by-value),而傳值的方式會(huì)調(diào)用該類的拷貝構(gòu)造函數(shù),從而造成無(wú)窮遞歸地調(diào)用拷貝構(gòu)造函數(shù)。因此拷貝構(gòu)造函數(shù)的參數(shù)必須是一個(gè)引用2013-07-07C++中指向?qū)ο蟮某V羔樑c指向常對(duì)象的指針詳解
如果一個(gè)變量已經(jīng)被聲明成常變量,則只能用指向常變量的指針變量指向它,而不能用一般的(非const型的)指針變量指向它2013-10-10如何在C語(yǔ)言中判斷socket是否已經(jīng)斷開
如果不主動(dòng)關(guān)閉socket的話,系統(tǒng)不會(huì)自動(dòng)關(guān)閉的,除非當(dāng)前進(jìn)程掛掉了,操作系統(tǒng)把占用的socket回收了才會(huì)關(guān)閉。小編今天跟大家簡(jiǎn)單介紹下如何在C語(yǔ)言中判斷socket是否已經(jīng)斷開2019-05-05