首页 > 其他分享 >顺序查找

顺序查找

时间:2022-12-11 14:23:53浏览次数:30  
标签:TableLen 顺序 int ElemType ST 查找 key

学习时间2022.12.11

顺序查找

基本概念

  • 定义:在一个已知无序(或有序)的队列中找出与给定的关键字相同的数的具体位置。 其原理是让关键字与队列中的数从开始一个一个地往后逐个比较,直到找到与给定的关键字相同的数。

知识点补充

  • 生成随机数
    #include <time.h>
    time_t t;
    //初始化随机数发生器
    srand(time(&t));
    //输出0-100的随机数赋给num
    num = rand() % 100;
    
    • 函数声明:void srand(unsigned int seed)
    • 参数:seed -- 这是一个整型值,用于伪随机数生成算法播种。

代码实现

数据结构

typedef int ElemType;

typedef struct {
	ElemType* elem;//整型指针
	int TableLen;//动态数组元素个数
}SSTable;

函数声明

  • 初始化数组
    • 哨兵作用:在查找方向的尽头设置哨兵元素,免去了查找过程中每次比较后都要判断查找位置是否越界的小技巧,看似与原先差别不大,但是总数据较多时,效率提高很明显,是非常好的编程技巧。
      void ST_init(SSTable &ST, int len){
          ST.TableLen = len + 1;//多申请一个空间,用作哨兵。工作中一般不使用
          //ST.elem = (ElemType*)malloc(sizeof(ElemType) * ST.TableLen);
          ST.elem = (ElemType*)calloc(ST.TableLen, sizeof(ElemType));
          //初始化随机数发生器
          srand(time(NULL));
          //输出0-100的ST.TableLen个随机数
          for (int i = 0; i < ST.TableLen; i++)
          {
              ST.elem[i] = rand() % 100;
          }
      }
    
  • 查找给定元素值的位置
      int Search_Seq(SSTable ST, ElemType key) {
          //0处是哨兵,如果i返回值为0,则说明没有找到该key
          ST.elem[0] = key;
          int i;
          for (i = ST.TableLen - 1; ST.elem[i] != key; i--);
          return i;
      }
    
  • 输出数组
      void ST_print(SSTable ST) {
          for (int i = 0; i < ST.TableLen; i++) {
              printf("%3d", ST.elem[i]);
          }
          printf("\n");
      }
    

main函数

int main(){
	SSTable ST;
	//pos用于存储顺序查找找到的元素位置
	int pos;
	ElemType key;
	ST_init(ST, 10);
	ST_print(ST);
	printf("请输入需要查找的元素key值:");
	scanf("%d", &key);
	pos = Search_Seq(ST, key);
	if (pos) {
		printf("您所查找的元素%d的位置为:第%d位\n", key, pos);
	}
	else {
		printf("您所查找的元素不存在\n");
	}
}

标签:TableLen,顺序,int,ElemType,ST,查找,key
From: https://www.cnblogs.com/ayubene/p/16973640.html

相关文章

  • 二分查找
    学习时间2022.12.11二分查找基本概念找到一篇文章二分查找详解,但是我没仔细看,先存在这里知识点补充qsort函数函数声明:voidqsort(void*base,size_tnitems,......
  • 算法总结-二分查找(两种模板方法总结)
    【二分查找】定义:二分查找也称折半查找(BinarySearch),是一种在有序数组中查找某一特定元素的搜索算法。我们可以从定义可知,运用二分搜索的前提是数组必须是有序的,这里需要......
  • 我们常用于猜数字游戏的二分查找算法怎么用python实现呢?
    原理简单介绍类比猜数游戏我们上篇文章唠了唠经典的冒泡排序算法,如果说经典算法,那怎么少得了二分查找呢.可以说它是经典中的经典,就我们常用于猜数字方法.就是他.比如猜1......
  • (转)shell命令:find查找命令
    原文:https://blog.csdn.net/xuejianbest/article/details/84988196?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4-84......
  • 二维数组中的查找
    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。......
  • 调用一个二分法函数查找数值的下标值
    intbinary_search(intx,intarrx[],intsz){ intleft=0; //intright=(sizeof(arrx)/sizeof(arrx[0]))-1;不能在函数里计算数组(参数)的大小 intright=sz-......
  • 顺序表-00017-删除顺序表中值为key的所有元素
     删除顺序表中值为key的所有元素,remove_allX/***@brief功能:删除值等于key的所有元素\n*return返回删除所有key元素后剩余元素个数*@note逐个取旧表元素与k......
  • 顺序表-00015-合并顺序表
    顺序表结构定义typedefintseqType; //定义顺序表数据类型//定义顺序表的结构体typedefstructt_sList{ seqType*pbase; //表基址 intcapacity; //表......
  • 顺序表-00016-旋转顺序表
     旋转顺序表:将顺序表所有元素n个整体向后移动k位。方法1/***@brief功能:数组arr元素个数为n,整体向后移动k(非负数)个位置\n*@note取出arr[n-1]处元素,对[0,n-1]......
  • os.listdir()读出来的文件顺序和本地的顺序不一致,应该怎么做呢?
    大家好,我是皮皮。一、前言前几天在帮助粉丝解决问题的时候,遇到一个简单的小需求,这里拿出来跟大家一起分享,后面再次遇到的时候,可以从这里得到灵感。二、需求澄清问题如......