顺序查找算法(C语言实现)
顺序查找法基本思路:对一组数据的遍历,这组数据是否排序并不重要,从第一个元素开始逐个与需要查找的元素进行比较,如果等于需要查找的元素,返回元素的下标
第 40~45 行定义了 checked 数组,初始值为 0,temp 是生成的随机数。
我们以 temp 为下标,当 temp 第 1 次出现时,将以 temp 为下标的 checked 数组元素值设置为 1。
如果再次生成了 temp 值,检查相应的 checked 数组 temp 下标的值是否是 0,为 0 就说明 temp 是新数需要保存,为 1 就说明 temp 是已有数不用保存,需要重新产生一个值。
接下来调用顺序查找函数
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
i
,工作结束,否则从下一个元素继续比较,直到查找到最后数据为止。
示例
利用顺序查找法编写下列示例。C语言编程代码如下:#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 50 /*最大数组容量*/ struct element /*记录结构声明*/ { int key; }; typedef struct element record; record data[MAX+1]; /*顺序查找*/ int seqsearch(int key) { int pos; /*数组索引*/ data[MAX].key=key; pos=0; /*从头开始找*/ while(1) { if(key==data[pos].key) /*是否找到*/ break; pos++; /*下一个元素*/ } if(pos==MAX) /*在最后*/ return -1; else return pos; } /*主程序*/ int main() { int checked[300]; /*检查数组*/ int i,j,temp; srand(time(0)); /*使用时间初始随机数*/ for(i=0;i<300;i++) checked[i]=0; /*清除检查数组*/ i=0; while(i!=MAX) /*生成数组值的循环*/ { temp=rand() % 300; /*随机数范围0~299*/ if(checked[temp]==0) /*是否是已有的值*/ { data[i].key=temp; checked[temp]=1; /*设置此值生成过*/ i++; } } printf("随机产生的50个数据为:\n"); for(j=0;j<i;j++) printf("%d ",data[j]); printf("\n"); while(1) { printf("\n请输入查找值 0-299(输入-1结束):"); scanf("%d",&temp); /*导入查找值*/ if(temp!=-1) { i=seqsearch(temp); /*调用顺序查找*/ if(i!=-1) printf("找到查找值%d[第%d个]\n",temp,i+1); else printf("没有找到查找值%d\n",temp); } else exit(1); /*结束程序*/ } return 0; }运行结果:
随机产生的50个数据为:
61 195 189 57 7 115 271 73 236 30 256 197 13 0 113 206 223 211 46 177 262 202 239 169 65 164 35 222 225 185 290 188 235 56 194 119 104 234 80 36 125 63 120 280 279 98 172 23 233 244
请输入查找值 0-299(输入-1结束):6
没有找到查找值6
请输入查找值 0-299(输入-1结束):271
找到查找值271[第7个]
请输入查找值 0-299(输入-1结束):0
找到查找值0[第14个]
请输入查找值 0-299(输入-1结束):-1
第 40~45 行定义了 checked 数组,初始值为 0,temp 是生成的随机数。
我们以 temp 为下标,当 temp 第 1 次出现时,将以 temp 为下标的 checked 数组元素值设置为 1。
如果再次生成了 temp 值,检查相应的 checked 数组 temp 下标的值是否是 0,为 0 就说明 temp 是新数需要保存,为 1 就说明 temp 是已有数不用保存,需要重新产生一个值。
接下来调用顺序查找函数
seqsearch()
,根据用户输入值查找元素是否存在。查找方法是遍历数组,直到找到与用户输入值相等的元素,把该元素在数组中的下标返回给主函数。声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。