`
java-mans
  • 浏览: 11818164 次
文章分类
社区版块
存档分类
最新评论

数据结构之顺序查找(Sequential Search)

 
阅读更多
查找:
就是在数据中寻找特定的值,这个值称为“关键码(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

    **Python中的顺序查找Sequential Search** 顺序查找是一种基本的查找算法,尤其在计算机科学和编程领域中,它是初学者学习的第一个查找方法。这种算法简单易懂,适用于任何类型的序列数据结构,如数组或列表。在...

    数据结构顺序查找

    ### 数据结构顺序查找 #### 一、概述 在计算机科学中,查找算法是处理数据集时最基础且关键的操作之一。查找(Search)是指在一个给定的数据集合中找到指定元素的过程。查找算法根据其实现方式可以分为多种类型,...

    数据结构 顺序查找 折半查找

    **顺序查找(Sequential Search)** 顺序查找是最基础的查找算法之一,适用于任何线性结构,如数组或链表。它的基本思想是从数据集的第一个元素开始,逐个与目标值比较,直到找到匹配的元素或遍历完整个数据集。如果...

    数据结构(栈、队列、二叉树、顺序查找、二分查找、图的遍历等)

    4. 顺序查找(Sequential Search) 顺序查找是最基础的查找方法,从数据集合的起始位置逐个比较,直到找到目标元素或者搜索完整个集合。虽然效率较低,但实现简单,适用于小规模或无序数据集。 5. 二分查找(Binary...

    10 查找_wantms3_顺序查找_分块查找_数据结构_折半查找分块查找_

    1. **顺序查找**(Sequential Search):这是一种最基础的查找方法,适用于任何线性数据结构,如数组或链表。在顺序查找中,我们从数据集合的第一个元素开始,逐个比较目标值与当前元素,直到找到匹配项或者遍历完整...

    顺序查找和折半查找

    **顺序查找(Sequential Search)** 顺序查找是最简单的查找算法,适用于任何线性数据结构,如数组或链表。其基本思想是从数据集合的第一个元素开始,逐个与目标值进行比较,直到找到目标元素或者遍历完整个集合。...

    顺序查找——C++代码

    顺序查找是一种简单的搜索算法,常用于线性数据结构,如数组。在C++编程中,实现顺序查找并不复杂,但效率相对较低,特别是在大规模数据集上。本篇将详细讲解顺序查找的基本概念、C++代码实现及其应用。 顺序查找的...

    Search(二分查找和顺序查找的比较)

    - 顺序查找适用于任何数据结构,但效率较低,尤其当数据量大时。 - 二分查找要求数据已排序,适合大量数据且需要高效查找的场合。 4. **查找效率**: - 在大型数据集合中,二分查找的效率远高于顺序查找,因为其...

    Java经典算法汇总之顺序查找(Sequential Search)

    **顺序查找(Sequential Search)**是一种基础且简单的查找算法,尤其适用于**线性表**的查找,无论是顺序存储(如数组)还是链接存储(如链表)。它的主要思想是从列表的一端开始,按照一定的顺序逐个比较元素,直到...

    Java语言编写的数据结构-查找

    **顺序查找** 是最基础的查找算法之一。在顺序查找中,我们从数据集的开始位置遍历每个元素,直到找到目标值或遍历完整个列表。在Java中,你可以使用for循环或while循环来实现这一过程。虽然简单,但这种方法效率较...

    数据结构几种查找算法

    4. **顺序查找(Sequential Search)**: 顺序查找是最简单的查找方法,适用于任何类型的线性结构,如数组或链表。它从列表的第一个元素开始,逐个比较直到找到目标元素或遍历完列表。在最好的情况下(即目标元素...

    迭代顺序查找、递归顺序查找、二分查找

    **迭代顺序查找(Sequential Search)** 迭代顺序查找是最基础的查找算法,适用于任何线性数据结构,如数组或链表。它按照元素的顺序逐个比较目标值,直到找到目标或者遍历完整个序列。在最坏的情况下,迭代顺序查找...

    数据结构课程设计-查找

    数据结构课程设计报告 在计算机科学中,查找是数据处理的核心操作之一,它涉及到如何高效地在一组数据中寻找特定的元素。本课程设计主要关注五种不同的查找算法:顺序查找、折半查找、二叉树查找、二叉排序树查找...

    数据结构-查找-PPT

    1. **顺序查找**(Sequential Search):从列表的开头开始,逐个比较元素直到找到目标或遍历完整个列表。这种方法简单易实现,但时间复杂度为O(n),在大规模数据中效率较低。 2. **折半查找**(Binary Search):...

    顺序查找算法C语言源程序.zip

    顺序查找算法是计算机科学中最基础的搜索算法之一,它在数据结构和算法分析中占有重要地位。本资源是一个关于顺序查找算法的C语言实现压缩包,包含了一个或多个C源代码文件,旨在帮助学习者理解和掌握如何用C语言...

    数据结构学习---查找

    1. **顺序查找(Sequential Search)** 顺序查找是最基础的查找方法,适用于任何无序或有序的数据结构。它从数据集的第一个元素开始,逐个比较目标值,直到找到目标元素或者遍历完整个数据集。时间复杂度在最坏的...

    顺序查找和折半查找在10个元素中查找20

    在给定的标题“顺序查找和折半查找在10个元素中查找20”中,我们关注的是两种基本的查找算法:顺序查找(Sequential Search)和折半查找(Binary Search)。这些算法在处理有序或无序数据集时各有优势,下面我们将...

    数据结构相关查找算法

    顺序查找(Sequential Search)是最简单的查找方法,从数据集合的第一个元素开始逐个比较,直到找到目标元素或遍历完整个集合。其时间复杂度在最好情况下为O(1),最坏情况下为O(n)。 二分查找(Binary Search)适用...

    数据结构-查找基本操作代码.doc

    本实验文件主要讨论了两种常见的查找方法:顺序查找(Sequential Search)和二分查找(Binary Search),并给出了这两种查找方法的C语言实现。此外,还简要介绍了二叉排序树(Binary Sort Tree)的概念和查找操作。 ...

    数据结构第七章查找(“查找”文档)共60张.pptx

    1. 顺序查找(Sequential Search)是最基础的查找方法,适用于顺序存储和链式存储的数据结构。在顺序查找过程中,我们从表的第一个元素开始,逐个与给定值进行比较,直到找到匹配的元素或者遍历完整个表。优点是算法...

Global site tag (gtag.js) - Google Analytics