#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define maxn 100//设置的表长的最大值
using namespace std;
typedef struct//顺序表的存储结构,这里我将数据类型都定义为int型
{
int num[maxn];//用num[]数组存储表的元素
int length;//计算表长
}SSTable;
int search(SSTable ST,int key)//查找函数
{//在顺序表ST中顺序查找其关键字等于key的数据元素,若找到函数的值为该元素在表中的位置,否则为0。
int i;
ST.num[0]=key;//哨兵
for(i=ST.length;ST.num[i]!=key;--i);//从后往前找
return i;
}
int main()
{
int i,n,key,position;
SSTable ST;
printf("输入元素个数:");
scanf("%d",&n);
ST.length=n+1;//因为第0个元素设置为哨兵,所以有n个元素的表的长度是元素个数加 1,即n+1;
printf("输入各个元素的值:");
for(i=1;i<=n;i++)
{
scanf("%d",&ST.num[i]);
}
sort(ST.num+1,ST.num+n+1);//sort()函数使排序函数,传说中的快排
printf("输出排好序的元素:");
for(i=1;i<=n;i++)
{
printf("%d ",ST.num[i]);
}
printf("\n");
printf("输入要查找的数:");
scanf("%d",&key);
position=search(ST,key);//把查找到的元素的位置赋值给position,并在后面输出position
if(position)
printf("要查找元素的位置是:%d\n",position);
else printf("查找失败\n");
return 0;
}
顺序查找的改进
最新推荐文章于 2020-07-08 15:37:00 发布