您的位置:首页 > 理论基础

2008秋-计算机软件基础- 第四章- 顺序查找,二分查找

2007-10-07 10:59 357 查看
/*---------------------------------------------------------

Title: 顺序查找

Author : Eman Lee

----------------------------------------------------------*/

#include<stdio.h>

//定义顺序存储线性表的结点结构

struct node

{

int key;//关键字

int other; //非关键字

};

int SequencSearch(struct node numbers[],int length, int value)

{

//顺序查找,在numbers[]中查找value,表长length

//成功返回位置(0~length-1),失败返回-1。

int i;

for(i=0;i<length;i++)

{

if(numbers[i].key==value)

return i;

}

return -1;

}

void main()

{

struct node s[5]={{1,80},{2,75},{3,60},{4,89},{5,100}};

int position;

position=SequencSearch(s,5,3);

//position=SequencSearch(s,5,10);

printf("position=%d\n",position);

}

/*---------------------------------------------------------

Title: 二分查找

Author : Eman Lee

----------------------------------------------------------*/

#include<stdio.h>

//定义顺序存储线性表的结点结构

struct node

{

int key;//关键字

int other; //非关键字

};

int binsearch(struct node r[],int n,int x)

/*在长度为n的升序线性表上查找关键字为x的元素*/

{ int low,high,mid;

low=1; high=n;

/*设置查找区间左、右端点的初值*/

while(low<=high) /*当查找区间非空时进行查找*/

{ mid=(low+high)/2; /*求出区间中间位置mid的值*/

if(x==r[mid].key) return(mid);

/*查找成功时返回元素所在的位置*/

else

{ if(x<r[mid].key) high=mid-1; /*缩小查找区间*/

else low=mid+1;

}

}

return(0); /*查找失败时返回0值*/

} /*binsearch*/

void main()

{

struct node s[6]={{0,0},{1,80},{2,75},{3,60},{4,89},{5,100}};

int position;

//position=binsearch(s,5,3);

position=binsearch(s,5,10);

printf("position=%d\n",position);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: