发布日期:2015-12-31 11:22 来源: 标签: 编程语言 C教程 C语言查找 C语言顺序查找
顺序查找的原理很简单,就是遍历整个列表,逐个进行记录的关键字与给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录。如果直到最后一个记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找失败。下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
查找在我们生活中无处不在,比如查公交,查机票,查酒店。。。这些都是查找。
首先来看一下查找技术的分类。如下图:

什么是顺序查找呢?顺序查找的原理很简单,就是遍历整个列表,逐个进行记录的关键字与给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录。如果直到最后一个记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找失败。
下面是顺序查找的算法实现代码。
C#版:
namespace SequenceSearch.CSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> list = new List<int> { 50, 10, 90, 30, 70, 40, 80, 60, 20 };
            Console.WriteLine("********************顺序查找********************\n");
            Display(list);
            int result = SequenceSearch(list, 30);
            if (result != -1) Console.WriteLine("30在列表中的位置是:{0}", result);
            else Console.WriteLine("对不起,列表中不存在该元素!");
            Console.ReadKey();
        }
        /// <summary>
        /// 顺序查找
        /// </summary>
        /// <param name="list">待查列表</param>
        /// <param name="key">关键字</param>
        /// <returns>返回关键字在列表中的位置</returns>
        public static int SequenceSearch(List<int> list, int key)
        {
            //遍历查找列表
            for (int i = 0; i < list.Count; i++)
            {
                //找到该记录,返回位置序号
                if (list[i] == key) return i;
            }
            //没有找到
            return -1;
        }
        private static void Display(IList<int> list)
        {
            Console.WriteLine("\n**********展示结果**********\n");


            if (list != null && list.Count > 0)
            {
                foreach (var item in list)
                {
                    Console.Write("{0} ", item);
                }
            }
            Console.WriteLine("\n**********展示完毕**********\n");
        }
    }
}
程序运行结果如图:

C语言版:
/*包含头文件*/
#include "stdio.h"
#include "stdlib.h"   
#include "io.h"
#include "math.h" 
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20
typedef int Status; 
typedef struct
{
    int data[MAXSIZE];
    int length;    
}SeqList;
/*顺序查找算法*/
int SequenceSearch(SeqList *seqList,int key)
{
    int i;
    //遍历顺序表
    for (i=0;i<seqList->length;i++)
    {
        //找到该元素
        if (seqList->data[i]==key) return i;
    }
    //没有找到
    return -1;
}
/*打印结果*/
void Display(SeqList *seqList)
{
    int i;
    printf("\n**********展示结果**********\n");
    for (i=0;i<seqList->length;i++)
    {
        printf("%d ",seqList->data[i]);
    }
    printf("\n**********展示完毕**********\n");
}
#define N 9
void main()
{
    int i,j;
    SeqList seqList;
    //定义数组和初始化SeqList
    int d[N]={50,10,90,30,70,40,80,60,20};
    for (i=0;i<N;i++)
    {
        seqList.data[i]=d[i];
    }
    seqList.length=N;
    printf("***************顺序查找***************\n");
    Display(&seqList);
    j=SequenceSearch(&seqList,70);
    if (j!=-1) printf("70在列表中的位置是:%d\n",j);
    else printf("对不起,没有找到该元素!");
    getchar();
}
程序运行结果:

相关评论

专题信息
    C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。