查找——线性表顺序查找算法

来源:互联网 发布:dede上传网站源码 编辑:程序博客网 时间:2024/05/01 12:43
/**Copyright (c) 2015 , 烟台大学计算机学院*All right resvered .*文件名称: 线性表顺序查找算法.cpp*作    者: 郑兆涵*查找——线性表顺序查找算法*/


问题:对线性表顺序查找算法进行分析


编程代码:

//线性表顺序查找算法#include <stdio.h>#define MAXL 100typedef int KeyType;typedef char InfoType[10];typedef struct{    KeyType key;                //KeyType为关键字的数据类型    InfoType data;              //其他数据} NodeType;typedef NodeType SeqList[MAXL];     //顺序表类型int SeqSearch(SeqList R,int n,KeyType k){    int i=0;    while (i<n && R[i].key!=k)  //从表头往后找        i++;    if (i>=n)        return 0;    else        return i+1;}int main(){    int i,n=10;    int result;    SeqList R;    KeyType a[]= {2,3,1,8,5,4,9,0,7,6},x=9;    for (i=0; i<n; i++)        R[i].key=a[i];    result = SeqSearch(R,n,x);    if(result>0)        printf("序列中第 %d 个是 %d\n",result, x);    else        printf("木有找到!\n");    return 0;}

输出结果:


学习心得:

        被查找的对象是由一组元素组成的表或文件,而每个元素由若干哥数据项组成,假设每个元素都有一个能唯一标识该元素的关键字,在这种条件下,查找的定义是:给定一个值k,在含有n个元素的表中找出关键字等于k的元素.若找到,则查找成功,返回该元素的信息或该元素在表中的位置;否则查找失败,返回相关的指示信息.

线性表顺序查找算法分析:

        查找与数据的存储有关,线性表{a1,a2,....,an}有顺序和链式两种存储结构.作为顺序表存储时实现顺序查找算法.顺序查找是一种最简单的查找方法.它的基本思路是:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k相比较,若当前扫描到的关键字与k值相等,则查找成功;若扫描结束,扔未找到关键字等于k的元素,则查找失败.顺序查找算法(在顺序表R[0..n-1]中查找关键字为k的元素,成功是返回找到的元素的逻辑序号,失败时返回0):

#define MAXL 100typedef int KeyType;typedef struct{    KeyType key;                //KeyType为关键字的数据类型    InfoType data;              //其他数据} NodeType;typedef NodeType SeqList[MAXL];     //顺序表类型<pre name="code" class="cpp">int SeqSearch(SeqList R,int n,KeyType k){    int i=0;    while (i<n && R[i].key!=k)  //从表头往后找        i++;    if (i>=n)        return 0;    else        return i+1;}


        首先定义顺序表的类型,再定义一个SeqSearch()函数实现顺序查找.在SeqSearch(SeqList R,int n,KeyType k)中,其中是在具有n个数据元素R的SeqList中查找值为k的过程.在函数进行运算过程中,首先是通过while判断,当i<n个数据元素的时候,并且R[i].key!=k,也就是说当i在数组规定的长度内,并且当关键字的值不等于k的时候,进行循环i++.最后再进行判断当i>=n的时候,返回0,失败;当i<n时也就是找到了R[i].key=k,则返回i+1,i为逻辑顺序,则返回i+1是得到了物理顺序.此成功时的平均查找长度为O(n).     






1 0
原创粉丝点击