有序列表中分块查找-c语言

数据结构分块查找的实现(图解代码篇) 分块查找又称索引顺序查找,是顺序查找和二分查找的一种改进方法。 分块查找要求把一个数据分成若干块,每一块里面的元素可以是无序的,但对于一个递增的数组来说,第i块的最大元素一定要小于第i+1块的所有元素,分块查找还需要一个索引表,用来限定每一块的范围,在增加、删除、查找元素时都需要用到。 分块1 分块2 分块3 首先,我们看到的索引表是10、20、30,假如现在需要查找的目标值是12,通过二分查找索引表 我们可以确定12是在分块2中 然后在分块2中顺序查找,最后得到12存在... 阅读详情

#include <stdio.h>
struct block_index{
    int start;
    int end;
    int key;
} index_key[3];
int blockSearch(int key, int a[]);

int main()
{
    int numList[16];
    int i = 0;
    int j = 0;
    int key = 0;
    int ret = 0;
    printf("请输入需要查找的序列:\n");
    for(i=0;i<15;i++)
    {
        scanf("%d", &numList[i]);
    }
    printf("请输入需要查找的元素:\n");
    scanf("%d", &key);
    i = 0;
    while(i<3)//进行分块,因为我们要求在15个数中进行查找,所以分为3块
    {
        index_key[i].start = j; //存储每块的起点
        index_key[i].end = j+4; //存储没快的终点
        index_key[i].key = numList[j+4]; //记录每块的最大值,也就是终点的值,因为我们是按从小到大输入的有序列表
        j += 5;//将j拨到下一块的起始点
        i++; //进入下一块
    }
    ret = blockSearch(key, numList); //调用函数进行查找
    if(0 == ret)
    {
        printf("查询失败!\n");
        return -1;
    }
    else
    {
        printf("查找成功!\n其位置是%d\n", ret++);
    }

    return 0;
}

int blockSearch(int key, int a[])
{
    int i = 0 ;
    int j = 0;
    while (i<3 && key>index_key[i].key)//先确定key值在哪块
    {
        i++;
    }
    if(i>=3)// 不在我们分的三块中,则函数结束
    {
        return 0;
    }
    j = index_key[i].start;//确定在i块后,将此块的起始值赋给j
    while(j<index_key[i].end && key !=a[j])//轮训此块,确定j值,因为序列下标值是从0开始的,所以我们的返回值是j+1
        j++;

    return j+1;
}

结果:

└─[0] a.out
请输入需要查找的序列:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
请输入需要查找的元素:
1
查找成功!
其位置是1



从零理解查找算法:顺序、折半、分块查找的适用场景与选择指南 本文深入解析了顺序查找、折半查找和分块查找三种经典算法的核心原理与适用场景。通过对比分析其时间复杂度、前提条件及优劣势,为开发者提供了清晰的选择指南:顺序查找适用于无序小数据或链表;折半查找在有序静态数据中效率最高;分块查找则巧妙平衡了动态数据的维护成本与查找效率。 阅读详情

相关推荐

深入掌握分块查找:数据结构VIP教程代码剖析

在信息技术领域,数据结构是计算机存储、组织数据的方式。它定义了数据之间的关系以及对数据的操作和访问方法。理解数据结构是学习算法和软件开发的基础。查找技术是数据管理中的一项基础技术,其目的是在一定的数据集合中快速定位到目标数据。在计算机科学领域,查找技术广泛应用于各种数据结构中,如数组、链表、树、图等。随着数据量的不断增长,查找效率成为衡量数据结构性能的关键指标。分块查找作为一种特殊的查找技术,在特定条件下可以高效地处理大量数据。数据块是分块查找中的一个基本单位,它将数据表划分为若干个子集。

weixin_31486261的博客 609

C语言经典算法之分块查找算法

分块查找算法,也称为块搜素算法,是一种将数据集划分为块的查找方法。每个块内的数据是有序的,而块与块之间则可以是无序的。这个算法适用于对大量数据进行分块存储的场景,其中每个块的大小可以根据实际需求设定。

weixin_56154577的博客 3223

c语言实现分块查找

用c语言实现的分快查找,数组为自定义。有折半查找,顺序查找。

【算法】分块查找

转载于:【黑马程序员Java零基础视频教程_上部(2022新版Java入门,含斯坦福大学练习题+力扣算法题+大厂java面试题)】

qq_44793340的博客 232

AutoSAR RTE调度机制揭秘:从定时器事件到Runnable执行的完整流程

本文深入解析了AutoSAR RTE(运行时环境)的核心调度机制,详细阐述了从定时器事件触发到Runnable(可运行实体)执行的完整流程。通过剖析Rte_Start()函数、OS任务与警报的交互,以及事件驱动循环,揭示了RTE如何作为幕后指挥家,高效、可靠地协调软件组件间的周期性任务执行,是打通AutoSAR应用开发的关键。

weixin_29169899的博客 226

状态错误CS0234命名空间“Windows”中不存在类型或命名空间名“Management”(是否缺少程序集引用?)

解决源码编译UE打包失败问题

五百零一 2338

索引技术之有序索引

为什么要使用索引技术 当文件中记录的数据条数和数据量很大时,查找速度会明显下降,为了提高查找速度,我们必须对文件建立索引。 有序索引 根据记录中某种排序顺序建立的索引,叫做有序索引。一般索引技术是指这种索引。 有序索引的分类 如果索引的查找键值的顺序与主文件的顺序一致,那么这种索引称为主索引,也称为聚类索引。一般,主索引的查找键往往是文件的主键。 如果查找键的值的顺序与主文件的顺序不一致,那么...

qq_40744606的博客 2592

FX2N-2AD模块实战:从硬件连接到FROM/TO指令编程详解

本文详细解析FX2N-2AD模拟量输入模块的硬件连接与FROM/TO指令编程技巧,涵盖BFM缓冲存储器配置、梯形图程序设计及工程实战经验。通过实例演示如何实现精准信号采集与数据处理,特别针对PLC系统中的常见故障提供解决方案,助力工业自动化工程师高效完成设备调试与维护。

prometheus9mon的博客 507

C语言实现三种有序表查找算法

折半查找技术,又称二分查找。它的前提是线性表中的记录必须是关键码有序,线性表必须采用顺序存储。折半查找的基本思想是:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区域继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区域继续查找。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。该算法的时间

KittyGirl 2500

vuecli3 实现 移动端和pc端 界面切换(两套代码)

适合场景 多页面多系统应用 所有系统都在同一目录下。配置多入口多出口。每个系统之间可以链接。每个系统内依然采用Vue单页应用开发。 产品需求:一套代码 兼容pc端和移动端 , 移动端和pc端的样式布局差别很大,需要使用多界面,并判断使用手机的时候跳转移动端代码,使用pc端跳转pc端代码。 项目目录 分为两部分代码,pc 和mobile 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: <!DOCTYP

你怎么也喜欢嘴巴嘟嘟 5920

Xilinx Blockset Counter计数器模块使用及参数配置

本文详细介绍了Simulink中Xilinx Blockset库Counter模块的使用以及参数说明。

白码王子小张的博客 1096

C语言分块查找

示例说明:例如,采用分块查找算法在有序表11、12、18、28、39、56、69、89、96、122、135、146、156、256、298中查找关键字为96的元素。第一步:先查找索引表,确定待查记录所属分块(顺序或者折半查找),即索引表里的值大于等于关键字。建立一个索引表,保存每个分块的最大关键字和分块的存储区间。分块查找基于一个有序列表,其。第二步:在块内顺序查找。

weixin_66064447的博客 268

大模型-高通qnn基础

提供较低级别、高度可定制的统一API,通过单独的库加速所有AI加速器核心上的AI模型, 可以直接用于针对特定的加速器核心或从流行的运行时(包括Qualcomm Neural Processing SDK、TensorFlow Lite和ONNX运行时)委派工作负载。一个支持异构计算、系统级配置的一体化SDK,旨在将AI工作负载引导到我们平台上的所有加速器核心。为开发人员提供灵活性,包括核心间协作支持和其他高级功能。是一个为训练好的神经网络模型提供高级量化和压缩技术的库。

点滴的岁月 4093

数据结构实战:顺序查找、折半查找、分块查找的C语言实现与性能对比

本文详细介绍了顺序查找、折半查找和分块查找三种经典查找算法的C语言实现与性能对比。通过代码示例和实际测试数据,分析了每种算法的适用场景和效率差异,帮助开发者在不同数据规模和应用需求下做出最优算法选择。

醉三国 685

华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解(Python/JS/C/C++)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释发现新题目,随时更新。

学Java,找哪吒 5万+

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

 本文主要介绍了checking OpenSSL library version… configure: error: OpenSSL >= 1.1.1 required (have “100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)”)解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

C/C++ 常用的四种查找算法

在计算机科学中,搜索算法是一种用于在数据集合中查找特定元素的算法。C语言作为一种强大的编程语言,提供了多种搜索算法的实现方式。本文将介绍C语言中的四种常见搜索算法其中包括(线性查找,二分法查找,树结构查找,分块查找),并提供每种算法的简单实现示例。

微软技术分享 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数据结构之静态查找表——顺序查找、折半查找与分块查找

前言 在非数值运算问题中,数据存储量一般很大,为了能在大量信息中找到某些值,就需要用到查找技术。而为了提高查找效率,就需要对一些数据进行排序。查找和排序是两大重要技术,其数据处理量几乎占到数据总处理量的80%以上,所以查找与排序的有效性直接就影响到基本算法的有效性。本篇文章主要来讨论查找技术中的静态查找,主要包括顺序查找法、折半查找法以及分块查找法。 关于查找 查找表:是由同一类型的数据元素(或记录)构成的集合。由于“集合”中的数据元素之间存在着松散的关系,没有严格的前驱和后继的关系,因此...

人生处处是围城,一切都是最好的安排! 4560

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数据结构(C语言)-查找

查找一、基本概念二、静态查找表1、顺序查找2、折半查找3、分块查找4、算法比较三、动态查找表1、二叉排序树的概念2、 二叉排序树的基本运算3、平衡二叉树四、哈希表(散列表)查找1、散列表的若干术语2、散列函数的构造方法3、散列表的冲突处理4、散列表的查找 查找又称为检索,是指在某种数据结构中找出满足给定条件的结点,若找到满足给定值的元素,则查找成功,反之则失败 一、基本概念 1、查找表 查找表是由同一类型的数据元素(或记录)构成的集合。由于"集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的

czh2637750821的博客 3637

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

查找算法思想及代码——C语言

顺序查找法 折半查找法 分块查找法 树形查找法 二叉排序树,BST 平衡二叉排序树,AVL 红黑树,RBT B树 B+树 散列表(哈希表)

weixin_45788069的博客 2134

C语言经典编程282例04查找

024 二分查找 漫画学习:https://baijiahao.baidu.com/s?id=1635498997846582026&wfr=spider&for=pc 有序数组查找:二分查找: 小游戏:A在心里想一个范围[1, 1000]的数字,B来猜这个数,如果B猜的数字比A想的还要大,就说大看,如果B猜的数字比A想的要小,就说小了,一直到猜中为止。 只用9次猜出1000以内的数字,这就是二分查找的思想,每次猜测,都选取一段整数范围的中位数,这样是效率最高效率。 如果我们把场景

噗噗bug博客 513

数据结构(十)—查找算法(顺序表查找、有序表查找、线性索引查找、二叉排序树、AVL树、B树、散列表)

文章目录一、查找的定义二、顺序表查找(时间复杂度O(n))三、有序表查找(时间复杂度O(logn))3.1折半查找(二分查找)3.2插值查找3.3斐波那契查找四、线性索引查找4.1稠密索引4.2分块索引4.3倒排索引五、二叉排序树5.1二叉排序树的查找操作5.2二叉排序树的插入操作5.3二叉排序树的删除操作

yexiann的博客 2070

数据结构与算法(C语言版)P11——查找

本节主要学习了:1、查找的基本概念;2、线性表查找(顺序查找、折半查找、分块查找);3、树表的查找(二叉排序树、平衡二叉树);4、散列表(散列表引入、散列表相关术语、散列函数的构造问题解决等)

m0_57776598的博客 2282

C语言数据结构:查找!

查找成功方式一:方式二:查找失败方式一:方式二:查找成功查找失败查找效率分析插入操作查找操作删除操作查找效率分析有个小坑,注意!!!

qq_42319810的博客 1853

查找算法之散列表

新星计划:数据结构与算法,学习笔记,创作打卡4!本文主要是查找算法之散列查找的详细介绍。

墨城烟柳ベ旧人殇的博客 2440

基于C语言的查找算法汇编

正在整理,敬请期待!

weixin_47249161的博客 826
上一篇: 利用二分法从有序表中查找某个数值-C语言
下一篇: Linux时间获取函数-c语言
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值