最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言折半查找法的超詳細(xì)講解

 更新時(shí)間:2022年06月17日 09:57:23   作者:一個(gè)愛好編程的大學(xué)生i  
折半查找法也叫做?分查找,顧名思義就是把數(shù)據(jù)分成兩半,再判斷所查找的key在哪?半中,再重復(fù)上述步驟知道找到?標(biāo)key,下面這篇文章主要給大家介紹了關(guān)于C語言折半查找法的相關(guān)資料,需要的朋友可以參考下

折半查找法僅適用于對已有順序的數(shù)組、數(shù)據(jù)進(jìn)行操作!?。。◤男〉酱螅┳晕铱偨Y(jié):折半查找法就是相當(dāng)于(通過改變low或high的大?。┌阎虚g位置指到了key那個(gè)數(shù)那里,所以mid應(yīng)該處于循環(huán)里面,即mid=(high+low)/2。注意:low,mid,high都要與下標(biāo)綁定,也就是說它們就是下標(biāo)。且循環(huán)條件是:high>=low.

同時(shí)注意:⑴若原來數(shù)組是由小到大排列的則:

? ? ? mid=(high+low)/2;
? ? ? ? ? ? if(key<a[mid])//說明要找的值在左邊
? ? ? ? ? ? high=mid-1;
? ? ? ? ? ? else if(key>a[mid])//說明要找的值在mid右邊
? ? ? ? ? ? low=mid+1;//最小值的位置往右進(jìn)一位

㈡若原來數(shù)組是由大到小排列的則:

mid=(high+low)/2;
? ? ? ? ? ? if(key>a[mid])//注意是由大到小排列 ,所以此時(shí)key在a【mid】 左邊,故high=mid-1 ;
? ? ? ? ? ? high=mid-1;
? ? ? ? ? ? else if(key<a[mid])//注意是由大到小排列,所以此時(shí)key在a【mid】右邊,故low=mid+1;
? ? ? ? ? ? low=mid+1;

當(dāng)然在下面這個(gè)代碼中,也可以用選擇排序法和冒泡法來對任意數(shù)組進(jìn)行排序,然后在應(yīng)用此函數(shù),保證折半查找法的前提是排好序了。

#include<stdio.h>
 void zb(int key,int a[],int n)//key表示要找的數(shù),a表示數(shù)組,n表示數(shù)組元素個(gè)數(shù) 
 {
     int i,high,low,mid;
     int count1=0,count=0;
     low=0;
     high=n-1;
     while(high>=low)//保證右下標(biāo)不小于左下標(biāo) 
     {    
        count++;
        mid=(high+low)/2;//總的來說變得是中間位置相當(dāng)于把中間位置移到了key那個(gè)數(shù)那里,所以mid應(yīng)該處于循環(huán)里面 
         if(key<a[mid])//說明key在a【mid】的左半邊 ,那么最右邊的high下標(biāo)就可以在下標(biāo)mid基礎(chǔ)上往左進(jìn)一個(gè)單位了
        high=mid-1;
         else if(key>a[mid])//說明key在a【mid】的右半邊 ,那么最左邊的low下標(biāo)就可以在下標(biāo)mid基礎(chǔ)上往右進(jìn)一個(gè)單位了 
         low=mid+1;
        if(key==a[mid])
        {
            printf("元素找到了?。。n一共查找了%d次\n它處于a[%d]位置上\na[%d]=%d\n",count,mid,mid,key);
            count1++;
            break;
        }
    }
     if(count1==0)
     printf("元素不存在?。?!\n");
 }
 int main ()
 {
     int key,n,a[100];
     int i;
     void zb(int key,int a[],int n);//聲明定義函數(shù) 
     printf("請輸入數(shù)組元素個(gè)數(shù):\n");
     scanf("%d",&n);
     printf("請輸入(從小到大)所有數(shù)組元素:\n");
     for(i=0;i<n;i++)
     {
         scanf("%d",&a[i]);
     }
     printf("請輸入要查找的數(shù):\n");
     scanf("%d",&key);
     zb(key,a,n);
     printf("\n");
     return 0;
 }

總結(jié)

到此這篇關(guān)于C語言折半查找法的文章就介紹到這了,更多相關(guān)C語言折半查找法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解結(jié)構(gòu)體中占位符的用法

    深入理解結(jié)構(gòu)體中占位符的用法

    本篇文章是對結(jié)構(gòu)體中占位符的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言中的直接插入排序(帶圖詳細(xì))

    C語言中的直接插入排序(帶圖詳細(xì))

    這篇文章主要介紹了C語言中的直接插入排序(帶圖詳細(xì)),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用C語言如何輸出逆序數(shù)

    使用C語言如何輸出逆序數(shù)

    逆序數(shù)的就是把一個(gè)數(shù)倒過來,例如:1234那么它的逆序數(shù)就為4321,我們該如何是實(shí)現(xiàn)呢?下面這篇文章主要給大家介紹了關(guān)于使用C語言如何輸出逆序數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • C語言 結(jié)構(gòu)體(Struct)詳解及示例代碼

    C語言 結(jié)構(gòu)體(Struct)詳解及示例代碼

    本文主要介紹C語言 結(jié)構(gòu)體的知識(shí),學(xué)習(xí)C語言肯定需要學(xué)習(xí)結(jié)構(gòu)體,這里詳細(xì)說明了結(jié)構(gòu)體并附示例代碼,供大家參考學(xué)習(xí),有需要的小伙伴可以參考下
    2016-08-08
  • QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡單消息傳輸

    QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡單消息傳輸

    這篇文章主要為大家詳細(xì)介紹了QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡單消息傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++分析講解類的靜態(tài)成員變量是什么

    C++分析講解類的靜態(tài)成員變量是什么

    在C++中,靜態(tài)成員是屬于整個(gè)類的而不是某個(gè)對象,靜態(tài)成員變量只存儲(chǔ)一份供所有對象共用。所以在所有對象中都可以共享它。使用靜態(tài)成員變量實(shí)現(xiàn)多個(gè)對象之間的數(shù)據(jù)共享不會(huì)破壞隱藏的原則,保證了安全性還可以節(jié)省內(nèi)存
    2022-04-04
  • C語言實(shí)現(xiàn)日期和時(shí)間處理的常用函數(shù)總結(jié)

    C語言實(shí)現(xiàn)日期和時(shí)間處理的常用函數(shù)總結(jié)

    在C語言中,時(shí)間和日期處理是一項(xiàng)非?;A(chǔ)的技能,也是開發(fā)實(shí)際應(yīng)用程序時(shí)經(jīng)常會(huì)用到的功能,本文為大家總結(jié)了C語言中一些常用的時(shí)間庫函數(shù),希望對大家有所幫助
    2023-06-06
  • OpenGL實(shí)現(xiàn)3D空間中移動(dòng)圖像

    OpenGL實(shí)現(xiàn)3D空間中移動(dòng)圖像

    這篇文章主要為大家詳細(xì)介紹了OpenGL實(shí)現(xiàn)3D空間中移動(dòng)圖像,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 可能是你看過最全的十大排序算法詳解(完整版代碼)

    可能是你看過最全的十大排序算法詳解(完整版代碼)

    排序算法是程序中常用的算法,下面這篇文章主要給大家介紹了關(guān)于十大排序算法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • C++印刷模板使用方法詳解

    C++印刷模板使用方法詳解

    模板是C++支持參數(shù)化多態(tài)的工具,使用模板可以使用戶為類或者函數(shù)聲明一種一般模式,使得類中的某些數(shù)據(jù)成員或者成員函數(shù)的參數(shù)、返回值取得任意類型
    2022-11-11

最新評論

昌图县| 山东省| 洛川县| 阿拉尔市| 德庆县| 扬州市| 蒲江县| 松桃| 武陟县| 房山区| 海盐县| 南城县| 乐昌市| 贡觉县| 德江县| 新兴县| 台南县| 江山市| 湟源县| 大余县| 海安县| 富平县| 柳江县| 东乌珠穆沁旗| 广西| 白沙| 南充市| 于都县| 崇信县| 建阳市| 察哈| 泗洪县| 盐边县| 临夏县| 德格县| 和硕县| 双辽市| 太和县| 姚安县| 临安市| 开阳县|