99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

常見的查找算法匯總(含詳細(xì)代碼)5

jf_78858299 ? 來源:阿Q正磚 ? 作者:阿Q正磚 ? 2023-04-24 17:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

test.c

/**
 * C語言實(shí)現(xiàn)的紅黑樹(Red Black Tree)
 *
 * @author skywang
 * @date 2013/11/18
 */


#include 
#include "rbtree.h"


#define CHECK_INSERT 0    // "插入"動(dòng)作的檢測(cè)開關(guān)(0,關(guān)閉;1,打開)
#define CHECK_DELETE 0    // "刪除"動(dòng)作的檢測(cè)開關(guān)(0,關(guān)閉;1,打開)
#define LENGTH(a) ( (sizeof(a)) / (sizeof(a[0])) )


void main()
{
    int a[] = {10, 40, 30, 60, 90, 70, 20, 50, 80};
    int i, ilen=LENGTH(a);
    RBRoot *root=NULL;


    root = create_rbtree();
    printf("== 原始數(shù)據(jù): ");
    for(i=0; i

7、分塊查找

7.1、基本原理

分塊查找(Block Search)是一種基于分塊思想的查找算法。它將待查找的數(shù)據(jù)集合分成多個(gè)塊(Block),每個(gè)塊內(nèi)的數(shù)據(jù)按照某種方式有序排列。這樣就可以在查找時(shí)快速縮小查找范圍,從而提高查找效率。

分塊查找的基本原理如下:

  1. 將待查找的數(shù)據(jù)分成若干塊,并將每塊內(nèi)的數(shù)據(jù)按照某種方式有序排列。
  2. 確定各塊的范圍和關(guān)鍵字,用一張索引表來存放各塊的關(guān)鍵字和起始地址。
  3. 查找時(shí),先在索引表中二分查找到關(guān)鍵字所在的塊,然后在該塊內(nèi)進(jìn)行線性查找,直到找到目標(biāo)數(shù)據(jù)。

分塊查找的注意事項(xiàng)和應(yīng)用場(chǎng)景如下:

  1. 數(shù)據(jù)分塊要盡量均勻,使每塊數(shù)據(jù)量大致相等。
  2. 對(duì)每個(gè)塊內(nèi)的數(shù)據(jù)要按照某種方式有序排列,以便進(jìn)行二分查找。
  3. 適合數(shù)據(jù)集合變動(dòng)較少的情況,如果數(shù)據(jù)頻繁變動(dòng),需要不斷重構(gòu)索引表,效率較低。
  4. 分塊查找適合于數(shù)據(jù)量較大,但又不適合全部加載到內(nèi)存中的情況,比如外部文件查找。

7.2、代碼示例

#include 


// 定義塊的大小
#define BLOCK_SIZE 3


// 分塊查找函數(shù)
int blockSearch(int arr[], int n, int key)
{
    // 計(jì)算塊的數(shù)量
    int blockCount = (n + BLOCK_SIZE - 1) / BLOCK_SIZE;


    // 創(chuàng)建一個(gè)塊數(shù)組,存儲(chǔ)每個(gè)塊的最大值
    int blockMax[blockCount];
    for (int i = 0; i < blockCount; i++) {
        int max = arr[i * BLOCK_SIZE];
        for (int j = 1; j < BLOCK_SIZE && i * BLOCK_SIZE + j < n; j++) {
            if (arr[i * BLOCK_SIZE + j] > max) {
                max = arr[i * BLOCK_SIZE + j];
            }
        }
        blockMax[i] = max;
    }


    // 在塊數(shù)組中查找key所在的塊
    int blockIndex = 0;
    while (blockIndex < blockCount && blockMax[blockIndex] < key) {
        blockIndex++;
    }


    // 在塊中進(jìn)行線性查找
    int startIndex = blockIndex * BLOCK_SIZE;
    int endIndex = startIndex + BLOCK_SIZE;
    for (int i = startIndex; i < endIndex && i < n; i++) {
        if (arr[i] == key) {
            return i;
        }
    }


    return -1;
}


int main()
{
    int arr[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
    int n = sizeof(arr) / sizeof(arr[0]);


    int key = 12;
    int index = blockSearch(arr, n, key);
    if (index == -1) {
        printf("%d not found\\n", key);
    } else {
        printf("%d found at index %d\\n", key, index);
    }


    return 0;
}

該程序定義了一個(gè) BLOCK_SIZE 常量,表示塊的大小。在分塊查找函數(shù)中,首先計(jì)算塊的數(shù)量,然后創(chuàng)建一個(gè)塊數(shù)組,存儲(chǔ)每個(gè)塊的最大值。接下來,在塊數(shù)組中查找key所在的塊,并在該塊中進(jìn)行線性查找。如果找到了key,則返回其下標(biāo),否則返回-1。最后,程序使用一個(gè)示例數(shù)組來測(cè)試分塊查找函數(shù),查找數(shù)組中的一個(gè)元素并輸出結(jié)果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7256

    瀏覽量

    91931
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70786
  • 查找算法
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    5585
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    實(shí)現(xiàn)TCP的C代碼封裝(代碼

    實(shí)現(xiàn)TCP的C代碼封裝(代碼
    的頭像 發(fā)表于 09-28 16:03 ?3092次閱讀
    實(shí)現(xiàn)TCP的C<b class='flag-5'>代碼</b>封裝(<b class='flag-5'>含</b><b class='flag-5'>代碼</b>)

    簡(jiǎn)單的查找算法

    幾個(gè)比較基礎(chǔ)的查找算法:1. 無序鏈表的查找:主要是使用鏈表的遍歷操作來實(shí)現(xiàn)對(duì)于每個(gè)元素的訪問,和對(duì)比。通過在for循環(huán)中的if來判斷key相等的元素。如果找到就彈出val。如果沒有就返回null
    發(fā)表于 12-27 22:33

    isis 7 professional_元件查找代碼

    isis 7 professional元件查找代碼有各總isis 7 professional元件的查找代碼
    發(fā)表于 12-08 15:58 ?7次下載

    使用HTML5實(shí)現(xiàn)井字棋小游戲的算法代碼講解

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用HTML5實(shí)現(xiàn)井字棋小游戲的算法代碼講解。
    發(fā)表于 08-07 17:33 ?3次下載
    使用HTML<b class='flag-5'>5</b>實(shí)現(xiàn)井字棋小游戲的<b class='flag-5'>算法</b>和<b class='flag-5'>代碼</b>講解

    圖論算法及MATLAB程序代碼詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是圖論算法及MATLAB程序代碼詳細(xì)資料說明。
    發(fā)表于 04-23 08:00 ?0次下載
    圖論<b class='flag-5'>算法</b>及MATLAB程序<b class='flag-5'>代碼</b>的<b class='flag-5'>詳細(xì)</b>資料說明

    詳解C語言二分查找算法細(xì)節(jié)

    我相信對(duì)很多讀者朋友來說,編寫二分查找算法代碼屬于玄學(xué)編程,雖然看起來很簡(jiǎn)單,就是會(huì)出錯(cuò),要么會(huì)漏個(gè)等號(hào),要么少加個(gè) 1。
    的頭像 發(fā)表于 06-22 09:05 ?2991次閱讀
    詳解C語言二分<b class='flag-5'>查找</b><b class='flag-5'>算法</b>細(xì)節(jié)

    MATLAB優(yōu)化算法匯總01

    MATLAB優(yōu)化算法匯總01
    發(fā)表于 10-08 10:57 ?0次下載

    MATLAB優(yōu)化算法匯總02

    MATLAB優(yōu)化算法匯總02
    發(fā)表于 10-08 10:59 ?0次下載

    MATLAB優(yōu)化算法匯總03

    MATLAB優(yōu)化算法匯總03
    發(fā)表于 10-08 11:01 ?0次下載

    A星路徑規(guī)劃算法完整代碼資料匯總

    A星路徑規(guī)劃算法完整代碼資料匯總
    發(fā)表于 12-03 17:16 ?11次下載

    匯總常見單片機(jī)原廠代碼倉庫,值得收藏

    匯總常見單片機(jī)原廠代碼倉庫,值得收藏
    發(fā)表于 12-03 16:06 ?9次下載
    <b class='flag-5'>匯總</b><b class='flag-5'>常見</b>單片機(jī)原廠<b class='flag-5'>代碼</b>倉庫,值得收藏

    常見查找算法匯總詳細(xì)代碼)1

    今天就把常見*查找算法也總結(jié)個(gè)通透, 還有詳細(xì)代碼解釋, 真的是寫完這篇感覺腦子已經(jīng)不是自己的了,還希望大家好好利用。
    的頭像 發(fā)表于 04-24 17:20 ?1431次閱讀
    <b class='flag-5'>常見</b>的<b class='flag-5'>查找</b><b class='flag-5'>算法</b><b class='flag-5'>匯總</b>(<b class='flag-5'>含</b><b class='flag-5'>詳細(xì)</b><b class='flag-5'>代碼</b>)1

    常見查找算法匯總詳細(xì)代碼)2

    今天就把常見****查找算法也總結(jié)個(gè)通透, 還有詳細(xì)代碼解釋, 真的是寫完這篇感覺腦子已經(jīng)不是自己的了,還希望大家好好利用。
    的頭像 發(fā)表于 04-24 17:20 ?943次閱讀

    常見查找算法匯總詳細(xì)代碼)3

    今天就把常見****查找算法也總結(jié)個(gè)通透, 還有詳細(xì)代碼解釋, 真的是寫完這篇感覺腦子已經(jīng)不是自己的了,還希望大家好好利用。
    的頭像 發(fā)表于 04-24 17:20 ?1061次閱讀

    常見查找算法匯總詳細(xì)代碼)4

    今天就把常見****查找算法也總結(jié)個(gè)通透, 還有詳細(xì)代碼解釋, 真的是寫完這篇感覺腦子已經(jīng)不是自己的了,還希望大家好好利用。
    的頭像 發(fā)表于 04-24 17:20 ?785次閱讀