创建索引顺序表和分块查找

2024-08-22 06:08

本文主要是介绍创建索引顺序表和分块查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载出处:http://blog.csdn.net/qzfzz/article/details/9564025
//BlockSearch.h#ifndef BLOCK_SEARCH
#define BLOCK_SEARCH#include <stdio.h>
#include <stdlib.h>#define ARR_SIZE 100#pragma pack(push)
#pragma pack(4)typedef struct
{int iStart;int iEnd;int iMax;
}INode;typedef struct
{int* pArr;int iSize;INode* pNode;int iNodeSize;}BlockSeq;#pragma pack(pop)
#endif

//BlockSearch.c#include "BlockSearch.h"int BlockSearch( BlockSeq* pBSeq, int iTarget )
{if( !pBSeq ||  0 == iTarget )return -1;int i = 0;for( ; i < pBSeq->iNodeSize; i++ ){if( (pBSeq->pNode + i)->iMax >  iTarget )break;}if( i >= pBSeq->iNodeSize )return -1;int j;int iMaxIndex = ( pBSeq->pNode + i )->iEnd;for( j = ( pBSeq->pNode + i )->iStart; j <= iMaxIndex; j++ ){if( *(pBSeq->pArr + j) == iTarget )return j;}return -2;}BlockSeq* CreateBlockSeq()
{BlockSeq *pBSeq = (BlockSeq*)malloc( sizeof( BlockSeq ) );if( !pBSeq )return NULL;pBSeq->pArr = (int*)malloc( sizeof( int ) * ARR_SIZE );pBSeq->iSize = ARR_SIZE;pBSeq->pNode = (INode*)malloc( sizeof( INode ) * 4 );pBSeq->iNodeSize = 4;int i = 1;for( ; i <= 100; i++ ){*( pBSeq->pArr + i - 1 ) = i;}pBSeq->pNode->iStart = 0;pBSeq->pNode->iMax = 25;pBSeq->pNode->iEnd = 24;( pBSeq->pNode + 1 )->iStart = 25;( pBSeq->pNode + 1 )->iMax = 50;( pBSeq->pNode + 1 )->iEnd = 49;( pBSeq->pNode + 2 )->iStart = 50;( pBSeq->pNode + 2 )->iMax = 75;( pBSeq->pNode + 2 )->iEnd = 74;( pBSeq->pNode + 3 )->iStart = 75;( pBSeq->pNode + 3 )->iMax = 100;( pBSeq->pNode + 3 )->iEnd = 99;return pBSeq;
}int main( int argc, char* argv[] )
{BlockSeq *pBSeq = CreateBlockSeq();printf( "Result is: %d", BlockSearch( pBSeq, 33 ) );puts( "" );return 0;
}


这篇关于创建索引顺序表和分块查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095455

相关文章

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺