Skip to content

Latest commit

 

History

History
88 lines (79 loc) · 4.33 KB

File metadata and controls

88 lines (79 loc) · 4.33 KB

##一起talk C栗子吧(第二十四回:C语言实例-顺序查找)

各位看官们,大家好,上一回中咱们说的是与队列相关的例子,这一回咱们说的例子是:顺序查找。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,在编写程序中,我们经常需要查找我们想要元素。就好比你想要在互联网中查找什么东西时,肯定会使用百度或者google去搜索。

查找是最常用使用的功能,我们今天就来说说查找的方法:顺序查找。为了让大家容易理解查找方法,我们把查找的范围限定为某些容器,这些容器可以是我们前面说过的链表,栈,队列 。查找的内容就是这些容器中的某个元素。

有了我们约定的这些前提条件,我们来说说什么是顺序查找方法:依次遍历整个容器,在遍历过程中比较查找的内容与容器中的元素,如果查找的内容与容器中的某个元素相同,那么表示已经从容器中查找到想要的内容了。我们可以称其为:查找成功。如果查找的内容与容器中的所有元素都不相同,那么表示容器中没有我们想要查找的内容。我们可以称其为:查找失败。

顺序查找的方法,思路比较简单。我们在日常生活中也使用。举个日常生活的例子:回家时需要使用钥匙开门,这时就去衣服口袋里找。先是上衣的口袋,然后是裤子的口袋,所有的口袋都找遍了,还是没有找到钥匙。钥匙去哪儿了?这还用问,肯定是丢了呀。哈哈!这个例子中,查找的容器是衣服上的口袋;查找的对象是钥匙;从上衣口袋到裤子口袋依次找钥匙的过程,就是一个顺序查找的方法。顺序查找虽然简单,但是它的效率低。如果容器的容量小一些还好,如果容器容量大的话,那将要使用很长的时间去遍历容器。回到刚才哪个例子中,查找衣服上所有的口袋相对来说还算是容易一些,毕竟衣服上的口袋不是很多,很快就能查找完。如果让你去查找一天内走过的所有地方,那你就去慢慢查找吧,而且能不能找到钥匙还是个未知数。找不到钥匙该怎么办呀?重新配一把钥匙呗,哈哈!

看官们,详细的代码放如下所示,请大家参考:

     1	/* **************************
     2	 * Source file of Sequential Search
     3	 * *************************/
     4	
     5	#include<stdio.h>
     6	
     7	#define SUCCESS 0
     8	#define FAILE 1
     9	
    10	#define SIZE 10 //容器大小定义为10
    11	
    12	typedef int Elmt; //把int当作容器中元素的类型,实际中可以使用其它的类型或者自己定义一个元素类型
    13	
    14	//顺序查找函数,头文件的内容比较简单,因此把头文件和源文件放在一起
    15	int SeqSearch(Elmt* a,Elmt e)
    16	{
    17		int i =0;
    18		int flag = 0;
    19	
    20		if(NULL == a)
    21			return FAILE;
    22	
    23		while(i < SIZE )
    24		{
    25			if(e == *(a+i))
    26			{
    27				flag = 1;
    28				break;
    29			}
    30	
    31			i++;
    32		}
    33	
    34		if(1 == flag)
    35		{
    36			flag = 0;
    37			return SUCCESS;
    38		}
    39		else
    40			return FAILE;
    41	
    42	}
    43	
    44	int main()
    45	{
    46		int i= 0;
    47		int f = 0; //想要查找的内容
    48		Elmt array[SIZE] = {0}; //简单起见,使用数组做为容器
    49	
    50		while(i++ < SIZE) //初始化容器
    51			array[i-1] = i;
    52	
    53		printf("the elmt of array is : ");
    54		i=0;
    55		while(i < SIZE)
    56			printf("%d ",array[i++]);
    57		printf(" \n");
    58	
    59		f = 5; //确定想要查找的内容
    60		//f = 59; //确定想要查找的内容
    61		if(!SeqSearch(array,f))
    62			printf("%d is found in array\n",f);
    63		else
    64			printf("%d is not found in array\n",f);
    65	
    66		return SUCCESS;
    67	}

写代码的关键就是遍历容器,遍历方法与所选的容器有关。我们在前面的章回中都说过,而且有例子,如果 大家忘记的话,可以查看前面章回的内容。因此在这里就不多说了,以免大家觉得我烦人。哈哈!

各位看官,关于顺序查找的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。