查找-顺序表的查找

相关术语:

  查找表:(Search Table)是由同一类型的数据元素(或记录)构成的集合。

  关键字:(Key)是数据元素中某个数据项的值,又称为键值,它可以标识一个数据元素。

  主关键字:若某个关键字可以唯一地标识一个记录,则称此关键字为主关键字(Primary Key)。这就意味着,对于不同的记录,其主关键字均不相同。主关键字所在的数据项 成为主关键码。

  次关键字:对于那些可以识别多个数据元素(或记录)的关键字,我们称之为次关键字(Second Key)。

  查找:就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或记录。

  静态查找表:只作查找操作的查找表。

  动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。

顺序表查找:

  

/*
这里 a 为一个int型数组的名字,也是数组的头指针int a[n]的形参
n为数组a[n]中元素的个数
key 是要查找的关键字
*/
int SequentialSearch(int *a,int n;int key)
{
    int i;
    for(i = 0;i < n;i++)
    {
        if(a[i] == key)
            return i;
    }
    return 0;
}

这里算法复杂度为O(2n),我们可以对它进行优化成:

int SequentialSearch(int *a,int n;int key)
{
    int i;
    a[0] = key;
    i = n;
    while(a[i] != key)
    {
        i--;
    }
    return i;
}

注意:这里我们默认了a[0]存放的不是我们要搜索数据项,所以,可以把它设置成 " 哨兵 " 。

时间: 2024-08-05 11:17:37

查找-顺序表的查找的相关文章

_DataStructure_C_Impl:在顺序表中查找元素

// _DataStructure_C_Impl:Search #include<stdio.h> #include<stdlib.h> #define MaxSize 100 #define IndexSize 20 typedef int KeyType; //元素的定义 typedef struct{ KeyType key; }DataType; //顺序表的类型定义 typedef struct{ DataType list[MaxSize]; int length; }

查找[1]顺序表的查找

简单顺序查找,有序表的二分查找,索引顺序表的查找 1 #include "iostream" 2 #include "iomanip" 3 #include "time.h" 4 #include "stdlib.h" 5 using namespace std; 6 7 #define Max 20 8 9 /* 10 *简单顺序查找 11 */ 12 int Seq_Search(int A[],int n,int x)

顺序表的查找、插入、删除、合并操作及其优缺点

顺序表的查找.插入.删除.合并操作,用c++实现相关代码: #include<iostream> using namespace std; //定义线性表顺序存储结构 #define MAXSIZE 100  //线性表最大长度 typedef struct { //线性表占用数组空间 int elem[MAXSIZE]; //记录线性表中最后一个元素在数组elem[]中的位置(下标值),空表置为-1 int last; }SeqList; //顺序表的按内容查找运算 //在顺序表L中查找与e

顺序表的查找

1.对长度为4的顺序表进行查找,若第一个元素的概率为1/8,第二个元素的概率为1/4,第三个元素的概率为3/8,第四个元素的概率为1/4,则查找任一个元素的平均查找长度为( ) A)11/8           B)7/4                         C)9/4       D)11/4 [答案]C [解析]对顺序表查找,ASL= ,代入题目得:ASL=4*(1/8)+3*(1/4)+2*(3/8)+1*(1/4)=9/4 注意:是从表尾开始查找 顺序查找 折半查找 分块查找

查找 - 顺序表查找

#include<cstdio> #include<cstring> #include<cstdlib> int Sequential_Search1(int *a,int n,int key){ int i; for(i=0;i<=n;i++){ if(a[i] == key) return i; } return 0; } int Sequential_Search2(int *a,int n,int key){ int i; a[0] = key; i =

顺序表 | 二分查找:两个数组合并后的中位数

输入两个长度相同的升序数组,返回这两个数组合并后的中位数 C++代码: int bisearch_midNum(int a[],int b[],int n){ int s1=0,s2=0,d1=n-1,d2=n-1,m1,m2; while(s1!=d1 || s2!=d2){//只要a,b序列同时出现了s==d的情况,才能False退出 m1=(s1+d1)/2; m2=(s2+d2)/2; system("pause"); if(a[m1]==b[m2]) return a[m1]

算法学习之查找算法:静态查找表(1)顺序表查找

引言: 对查找表一般的操作有:1.查询某个"特定的"数据元素是否在查找表中:2.检索某个"特定的"数据元素的各种属性:3.在查找表中插入一个数据元素:4.从查找表中删去某个数据元素. 静态查找表的操作只包括两种:1.查找某个"特定的"数据元素是否在查找表中:2.检索某个"特定的"数据元素的各种属性: 静态查找表又有四种表现形式:顺序表的查找.有序表的查找.静态树的查找.索引顺序表的查找. 静态查找涉及的关键字类型和数据元素类型

顺序表的创建、初始化、查找、删除、插入和合并

本文参考国家精品课程耿国华的数据结构写的,发现了书上的一些问题,并做了简单修正,补足了整个程序过程,若有不足,请跟帖指正!!! #include<iostream> #include<cstdio> using namespace std; #define MAXSIZE 100 #define ERROR 0 #define OK 1 typedef int ElemType; typedef struct { ElemType *elem; int last; }SqList;

数据结构-查找-线性表查找技术

顺序表的查找技术 假设有一组书8,5,9,80,16,5,56....如何查找我们的value? 一般为 for(int i=0;i<size;i++) { if(arry[i]==value) { return i; } }return false; 看第一个for循环中每次都需要判断一次i<size,那我们遍历100个数最坏情况下其实是比较了200次. 于是我们设定一个哨兵在a[0],然后while循环从后往前比较,加入比较到就返回i,否则返回0. 1 int search(vector&