顺序查找

一、定义:
按照序列原有顺序对数组进行遍历比较查询的基本查找算法
二、基本原理:
对任意一个序列以及一个给定的元素,将给定元素与序列中元素依次比价,直到找出与给定关键字相同的元素,或将序列中的元素与其都比较完为止。
三、适用方式:
顺序表、链表
四、实现
设有一个数据集合,{5,2,9,23,6,17,54}给定某一关键字key,在数据集合中查找key值所对应的数据元素,若找到返回下标,否则返回-1
方法一:顺序表实现

#include
#define N 7

int Search(int a[],int n,int key){
	int i,tag=-1;
	for(i = 0;i

或者也可以写成这种形式

int Search(int a[],int n,int key){
	int i;
	for(i = 0;i

方法二:链表法

#include
#include
#define N 7

typedef struct node{
	int data;
	struct node *next;
}ElemSN;

//创建链表
ElemSN * CreateLink(int a[],int n){
	ElemSN *h,*tail;
	int i;
	h = tail =(ElemSN *)malloc(sizeof(ElemSN));
	h->data=a[0];
	h->next=NULL;
	for(i = 1;inext = (ElemSN *)malloc(sizeof(ElemSN));
		tail->data=a[i];
		tail->next=NULL;
	}
	return h;
}

//查找关键字
ElemSN *Search(ElemSN *h,int key){
	ElemSN *p;
	for(p=h;p&&p->data-key;p=p->next);
	return p;
}

int main(void)
{
	int a[N]={5,2,9,23,6,17,54};
	int key;
	ElemSN *head,*p;
	printf("请输入你要查找的值:");
	scanf("%d",&key);
	head = CreateLink(a,N);
	p = Search(head,key);
	printf("%d",p);
	return 0;
}

时间复杂度O(n)
缺点:不适合大数据集合

你可能感兴趣的:(顺序查找)