国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

二分查找(C語言實現(xiàn))

這篇具有很好參考價值的文章主要介紹了二分查找(C語言實現(xiàn))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

二分查找的前提:

一個整形有序數(shù)組中查找具體某個數(shù)

以下以數(shù)組元素為偶數(shù)個做例

??二分查找(折半查找)的思想:對于已按關(guān)鍵字排序的序列,經(jīng)過一次比較,可將序列分割成兩部分,然后只在有可能包含待查元素的一部分中繼續(xù)查找,并根據(jù)試探結(jié)果繼續(xù)分割,逐步縮小查找范圍,直至找到或找不到為止。

?下圖為程序在數(shù)組中尋找整數(shù)6的過程?

進入循環(huán)之前,先定義數(shù)組的左右下標:左下標為0,右下標為數(shù)組元素個數(shù)減去1

二分查找(C語言實現(xiàn))

??while (left <= right),當作下標小于右下標時,進入循環(huán)

第一次循環(huán):

二分查找(C語言實現(xiàn))

if 和else? if語句內(nèi)均沒有break 語句,所以循環(huán)繼續(xù)

第二次循環(huán):

二分查找(C語言實現(xiàn))?第三次循環(huán):

?二分查找(C語言實現(xiàn))

跳出循環(huán)后判斷right的關(guān)系,這個if語句是在沒有找到的情況下進入?

?代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-507041.html

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//已知的整形有序數(shù)組
    int x = 0;//x是要尋找的數(shù)
    int left = 0;//左下標
    int right = sizeof(arr) / sizeof(arr[0]) - 1;//數(shù)組右下標  
    scanf("%d", &x);
    while (left <= right)
    {
        int mid = left+(right-left)/2;//找到最中間的數(shù)
        if (x < arr[mid])
        {
            right = mid-1;
        }
        else if (x > arr[mid])
        {
            left = mid+1;
        }
        else
        {
            printf("找到了,下標是%d\n", mid);
            break;
        }
    }
    if (right < left)
    {
        printf("沒找到");
    }

    return 0;
}

除了給定整形有序數(shù)組外,我們還可以自己輸入一個有序數(shù)組和需要查找的數(shù)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int arr[100];
    int j = 0;//j為需要尋找的數(shù)
    int i = 0;
    int left = 0;
    int right = 0;
    while (1)
    {
        scanf("%d", &arr[i]);
        i++;
        if (getchar() == '\n')
        {
            break;//遇到回車則證明數(shù)組輸入結(jié)束
        }
    }
    scanf("%d", &j);
    right = i - 1;//總共輸入了i個元素,最大下標為i-1
    while (left <= right)
    {
        int mid = left + (right - left) / 2;
        if (j < arr[mid])
        {
            right = mid - 1;
        }
        else if (j > arr[mid])
        {
            left = mid + 1;
        }
        else
        {
            printf("找到了,下標為%d\n", mid);
            break;
        }

    }
    //左右下標發(fā)生交叉的情況,則證明沒有找到
    if (left > right)
    {
        printf("沒找到\n");
    }
    return 0;
}

到了這里,關(guān)于二分查找(C語言實現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 34. 在排序數(shù)組中查找元素的第一個和最后一個位置(二分查找)

    二分查找到目標值然后左右找到坐標 問題在于:找左右坐標的時候時間復(fù)雜度不是 O(logN) 之前提到過二分查找不僅可找到相等的數(shù)值,更關(guān)鍵的是 它可以將數(shù)組分為截然不同的兩種情況 ,因此我們可以借助這個性質(zhì)找到 第一個大于等于 target 的值(左下標) 和 第一個大于

    2024年01月22日
    瀏覽(35)
  • 二分查找實例1(在排序數(shù)組中查找元素的第一個和最后一個位置)

    二分查找實例1(在排序數(shù)組中查找元素的第一個和最后一個位置)

    給你一個按照非遞減順序排列的整數(shù)數(shù)組? nums ,和一個目標值? target 。請你找出給定目標值在數(shù)組中的開始位置和結(jié)束位置。 如果數(shù)組中不存在目標值? target ,返回? [-1, -1] 。 你必須設(shè)計并實現(xiàn)時間復(fù)雜度為? O(log n) ?的算法解決此問題。 示例 1: 示例?2: 示例 3: 提示

    2024年02月09日
    瀏覽(21)
  • 【C語言】二分查找(詳解)

    【C語言】二分查找(詳解)

    ???歲月失語唯石能言的個人主頁? ? ? ?? ?? 個人欄專: 秒懂C語言 ? 若在許我少年時,一兩黃金一兩風(fēng) ? ?? 目錄 一、二分查找的思路? 二、思路分析 2.1定義變量 2.2邏輯分析 三、代碼實現(xiàn) 總結(jié) ? ? ? ? 二分查找是一種高效的查找算法,尤其適用于有序數(shù)組。它的基

    2024年02月04日
    瀏覽(15)
  • C語言之二分查找

    C語言之二分查找

    目錄 一、二分查找算法 二、分支語句中應(yīng)注意的小點 ? 所謂二分查找,就是要在一組 有序的數(shù)列 中,查找給定的數(shù)是否在此數(shù)列中。 最主要的步驟有三個: 1.確定被查找的范圍的左右下標left、right 2.根據(jù)left和right,確定中間元素的下標mid 3.根據(jù)mid鎖定的元素和查找的元素

    2023年04月22日
    瀏覽(16)
  • 【C語言】二分查找

    【C語言】二分查找

    在 有序表 中,每次都取 中間元素 作為比較的對象。 如果給中間值與給定值相等,則查找成功,返回該元素的下標/索引; 如果中間值大于給定值,則在中間值的右半?yún)^(qū)間繼續(xù)查找; 如果中間值小于給定值,則在中間值的左半?yún)^(qū)間繼續(xù)查找; 確定了該元素所在范圍那么范圍

    2024年02月06日
    瀏覽(17)
  • 一個幾乎全民都會的算法——二分查找

    一個幾乎全民都會的算法——二分查找

    20年前央視2套有一檔叫《幸運52》的綜藝節(jié)目,其中一個環(huán)節(jié)叫《幸運超市》,每一期已故著名主持人詠哥都會給佳賓們出示幾個商品,凡是佳賓猜中價格的,就能獲贈這件商品。這檔節(jié)目紅極一時,被很多地方衛(wèi)視節(jié)目復(fù)制抄襲。 比如,上面這段視頻(gif圖)的配音這樣的:

    2023年04月09日
    瀏覽(20)
  • 【C語言】二分查找(含圖解)

    【C語言】二分查找(含圖解)

    二分法:二分查找算法是一種在 有序數(shù)組 中查找某一特定元素的搜索算法,其思想就是不斷地將有序查找表“一分為二”,逐漸縮小搜索區(qū)域,進而找到目標元素。 搜素過程從數(shù)組的中間元素開始,如果中間元素正好是要查找的元素,則搜 素過程結(jié)束; 如果某一特定元素

    2024年02月07日
    瀏覽(18)
  • 牛刀小試---二分查找(C語言)

    牛刀小試---二分查找(C語言)

    二分查找,也叫折半查找,是一種在 有序數(shù)組 中查找特定元素的算法。它通過比較中間元素和目標值的大小,將查找范圍縮小為一半,直到找到目標元素或者查找范圍為空。 ?1.?確定搜索范圍:首先,需要確定要在哪個區(qū)間內(nèi)進行查找。這可以通過比較目標值與中間元素的

    2024年01月17日
    瀏覽(26)
  • 【單調(diào)?!俊径植檎摇縇eetCode: 2454.下一個更大元素 IV

    【單調(diào)?!俊径植檎摇縇eetCode: 2454.下一個更大元素 IV

    【動態(tài)規(guī)劃】【廣度優(yōu)先】LeetCode2258:逃離火災(zāi) 單調(diào)棧分類、封裝和總結(jié) 二分查找算法合集 給你一個下標從 0 開始的非負整數(shù)數(shù)組 nums 。對于 nums 中每一個整數(shù),你必須找到對應(yīng)元素的 第二大 整數(shù)。 如果 nums[j] 滿足以下條件,那么我們稱它為 nums[i] 的 第二大 整數(shù): j i n

    2024年02月03日
    瀏覽(25)
  • c語言經(jīng)典算法—二分查找,冒泡,選擇,插入,歸并,快排,堆排

    c語言經(jīng)典算法—二分查找,冒泡,選擇,插入,歸并,快排,堆排

    ? ? ? ? ?1、前提條件:數(shù)據(jù)有序,隨機訪問; ? ? ? ? ?2、實現(xiàn):遞歸實現(xiàn),非遞歸實現(xiàn) ? ? ? ? ?3、注意事項: ????????????????循環(huán)退出條件:low =high,low = high.說明還有一個元素,該元素還要與key進行比較 ? ? ? ? ? ? ? ? mid的取值:mid=(low + high)/2;mid = l

    2024年02月05日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包