查找:
就是在数据中寻找特定的值,这个值称为“关键码(key)”。
查找的目的:
就是为了确定数据中是否存在与关键码相同的数据。
一句数据是否已排序,查找的方法也会不同。以下给出了四种不同的查找方法。
顺序查找法
折半查找法
裴波那契查找法
插补查找法
其中顺序查找法是使用未经排序的数据。
另外三种方法都需要将数据先排序好后,然后才能使用。
除了上述的四种查找方法外,在有另两种查找方法:二叉树查找法和散列法。
这两种方法处理的数据结构不一定是数组,可以使用二叉树或者链表结构,这些查找数据都需要先行处理,存储在使用的数据结构后,
才能进行查找的操作。
1.顺序查找法(Sequential Search)
该查找法就如同数组的遍历,从数组的第一个元素开始,检查数组的每一个元素,以便确定是否有查找的数据。
由于是从头检查到尾,所以数组数据是否已经排序已经不重要。
例如:
先使用随机函数生成100个不相同的结构数据元素,然后输入数字,使用顺序查找法找到这个数字,若存在,输出数组索引,若不存在,就直接
输出信息直到输入的数字为-1为止。
代码实现如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
typedef struct element
{
int key;
}record;
record data[MAX];
int seq_search(int key)
{
int pos;
pos = 0;
while(pos < MAX)
{
if(key == data[pos].key)
return pos;
pos++;
}
return -1;
}
int main(int argc, char **argv)
{
int checked[300];
int i, temp;
long temptime;
srand(time(&temptime) % 60);
for(i = 0; i < 300; i++)
checked[i] = 0;
i = 0;
while(i != MAX)
{
temp = rand() % 300;
if(checked[temp] == 0) //用于检查是否有重复的值
{
data[i].key = temp;
checked[temp] = 1;
i++;
}
}
while(1)
{
printf("\n请输入查找值(0-299) ==> ");
scanf("%d", &temp);
if(temp != -1)
{
i = seq_search(temp);
if(i != -1)
printf("找到查找值:%d[%d]\n", temp, i);
else
printf("没有找到查找值:%d\n", temp);
}
else
exit(1);
}
system("pause");
return 0;
}
注:
标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。
rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:
printf("Random numbers are: %i %i\n",rand(),rand());
因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机。
为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。引自于:http://baike.baidu.com/view/3048977.htm
分享到:
相关推荐
**Python中的顺序查找Sequential Search** 顺序查找是一种基本的查找算法,尤其在计算机科学和编程领域中,它是初学者学习的第一个查找方法。这种算法简单易懂,适用于任何类型的序列数据结构,如数组或列表。在...
### 数据结构顺序查找 #### 一、概述 在计算机科学中,查找算法是处理数据集时最基础且关键的操作之一。查找(Search)是指在一个给定的数据集合中找到指定元素的过程。查找算法根据其实现方式可以分为多种类型,...
**顺序查找(Sequential Search)** 顺序查找是最基础的查找算法之一,适用于任何线性结构,如数组或链表。它的基本思想是从数据集的第一个元素开始,逐个与目标值比较,直到找到匹配的元素或遍历完整个数据集。如果...
4. 顺序查找(Sequential Search) 顺序查找是最基础的查找方法,从数据集合的起始位置逐个比较,直到找到目标元素或者搜索完整个集合。虽然效率较低,但实现简单,适用于小规模或无序数据集。 5. 二分查找(Binary...
1. **顺序查找**(Sequential Search):这是一种最基础的查找方法,适用于任何线性数据结构,如数组或链表。在顺序查找中,我们从数据集合的第一个元素开始,逐个比较目标值与当前元素,直到找到匹配项或者遍历完整...
**顺序查找(Sequential Search)** 顺序查找是最简单的查找算法,适用于任何线性数据结构,如数组或链表。其基本思想是从数据集合的第一个元素开始,逐个与目标值进行比较,直到找到目标元素或者遍历完整个集合。...
顺序查找是一种简单的搜索算法,常用于线性数据结构,如数组。在C++编程中,实现顺序查找并不复杂,但效率相对较低,特别是在大规模数据集上。本篇将详细讲解顺序查找的基本概念、C++代码实现及其应用。 顺序查找的...
- 顺序查找适用于任何数据结构,但效率较低,尤其当数据量大时。 - 二分查找要求数据已排序,适合大量数据且需要高效查找的场合。 4. **查找效率**: - 在大型数据集合中,二分查找的效率远高于顺序查找,因为其...
**顺序查找(Sequential Search)**是一种基础且简单的查找算法,尤其适用于**线性表**的查找,无论是顺序存储(如数组)还是链接存储(如链表)。它的主要思想是从列表的一端开始,按照一定的顺序逐个比较元素,直到...
**顺序查找** 是最基础的查找算法之一。在顺序查找中,我们从数据集的开始位置遍历每个元素,直到找到目标值或遍历完整个列表。在Java中,你可以使用for循环或while循环来实现这一过程。虽然简单,但这种方法效率较...
4. **顺序查找(Sequential Search)**: 顺序查找是最简单的查找方法,适用于任何类型的线性结构,如数组或链表。它从列表的第一个元素开始,逐个比较直到找到目标元素或遍历完列表。在最好的情况下(即目标元素...
**迭代顺序查找(Sequential Search)** 迭代顺序查找是最基础的查找算法,适用于任何线性数据结构,如数组或链表。它按照元素的顺序逐个比较目标值,直到找到目标或者遍历完整个序列。在最坏的情况下,迭代顺序查找...
数据结构课程设计报告 在计算机科学中,查找是数据处理的核心操作之一,它涉及到如何高效地在一组数据中寻找特定的元素。本课程设计主要关注五种不同的查找算法:顺序查找、折半查找、二叉树查找、二叉排序树查找...
1. **顺序查找**(Sequential Search):从列表的开头开始,逐个比较元素直到找到目标或遍历完整个列表。这种方法简单易实现,但时间复杂度为O(n),在大规模数据中效率较低。 2. **折半查找**(Binary Search):...
顺序查找算法是计算机科学中最基础的搜索算法之一,它在数据结构和算法分析中占有重要地位。本资源是一个关于顺序查找算法的C语言实现压缩包,包含了一个或多个C源代码文件,旨在帮助学习者理解和掌握如何用C语言...
1. **顺序查找(Sequential Search)** 顺序查找是最基础的查找方法,适用于任何无序或有序的数据结构。它从数据集的第一个元素开始,逐个比较目标值,直到找到目标元素或者遍历完整个数据集。时间复杂度在最坏的...
在给定的标题“顺序查找和折半查找在10个元素中查找20”中,我们关注的是两种基本的查找算法:顺序查找(Sequential Search)和折半查找(Binary Search)。这些算法在处理有序或无序数据集时各有优势,下面我们将...
顺序查找(Sequential Search)是最简单的查找方法,从数据集合的第一个元素开始逐个比较,直到找到目标元素或遍历完整个集合。其时间复杂度在最好情况下为O(1),最坏情况下为O(n)。 二分查找(Binary Search)适用...
本实验文件主要讨论了两种常见的查找方法:顺序查找(Sequential Search)和二分查找(Binary Search),并给出了这两种查找方法的C语言实现。此外,还简要介绍了二叉排序树(Binary Sort Tree)的概念和查找操作。 ...
1. 顺序查找(Sequential Search)是最基础的查找方法,适用于顺序存储和链式存储的数据结构。在顺序查找过程中,我们从表的第一个元素开始,逐个与给定值进行比较,直到找到匹配的元素或者遍历完整个表。优点是算法...