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

/*
*Copyright (c) 2015 , 烟台大学计算机学院
*All right resvered .
*文件名称: 线性表顺序查找算法.cpp
*作    者: 郑兆涵
*查找——线性表顺序查找算法
*/


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


编程代码:

//线性表顺序查找算法
#include <stdio.h>
#define MAXL 100
typedef 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;
}

输出结果:

查找——线性表顺序查找算法_第1张图片


学习心得:

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

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

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

#define MAXL 100
typedef 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).     






你可能感兴趣的:(查找——线性表顺序查找算法)