顺序查找算法
3个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#define MAX_LENGTH 100
typedef int KeyType;
typedef struct {
KeyType *elem;
int length;
}SSTable; //顺序表的存储结构
/*
此算法比第二个算法多了一个判定i是否出界的流程,对于查找数目较少的情况,
二者查找时间相差不大,对于存在大量数据时,该算法的主要查找时间消耗再判
定是否出界上,所以第二个算法明显比第一个算法好,唯一增加的就是一个“哨兵”
数据。
int Search_Seq(SSTable ST, KeyType key){
int i;
for(i=1; i<=ST.length && ST.elem[i] != key; i++ )
;
if(i<=ST.length)
return i;
else
return 0;
}
*/
int Search_Seq(SSTable ST, KeyType key){
int i;
ST.elem[0] = key; //“哨兵”,如果顺序表中不存在要查找的数据的话,则查找指针必定指向该哨兵
for(i = ST.length; ST.elem[i] != key; i--)
;
return i; //找到的话,则i != 0,否则i = 0
}
void main()
{
int i, key;
SSTable T;
T.elem = (KeyType *)malloc(sizeof(KeyType));
printf("How Many Entries Do You Want input\n");
scanf("%d", &T.length);
for(i=1; i<=T.length; i++){
printf("Please input the %dth entries \n", i);
scanf("%d", &T.elem[i]);
}
for (i=1; i<=T.length; i++)
printf("%5d",T.elem[i]); //显示已经输入的所有数据
printf("\nPlease input the data you want to search\n");
scanf("%d", &key);
i = Search_Seq(T,key);
printf("the search data is locate the %dth(0 indicate can not find)\n",i);
}
#include <stdlib.h>
#define MAX_LENGTH 100
typedef int KeyType;
typedef struct {
KeyType *elem;
int length;
}SSTable; //顺序表的存储结构
/*
此算法比第二个算法多了一个判定i是否出界的流程,对于查找数目较少的情况,
二者查找时间相差不大,对于存在大量数据时,该算法的主要查找时间消耗再判
定是否出界上,所以第二个算法明显比第一个算法好,唯一增加的就是一个“哨兵”
数据。
int Search_Seq(SSTable ST, KeyType key){
int i;
for(i=1; i<=ST.length && ST.elem[i] != key; i++ )
;
if(i<=ST.length)
return i;
else
return 0;
}
*/
int Search_Seq(SSTable ST, KeyType key){
int i;
ST.elem[0] = key; //“哨兵”,如果顺序表中不存在要查找的数据的话,则查找指针必定指向该哨兵
for(i = ST.length; ST.elem[i] != key; i--)
;
return i; //找到的话,则i != 0,否则i = 0
}
void main()
{
int i, key;
SSTable T;
T.elem = (KeyType *)malloc(sizeof(KeyType));
printf("How Many Entries Do You Want input\n");
scanf("%d", &T.length);
for(i=1; i<=T.length; i++){
printf("Please input the %dth entries \n", i);
scanf("%d", &T.elem[i]);
}
for (i=1; i<=T.length; i++)
printf("%5d",T.elem[i]); //显示已经输入的所有数据
printf("\nPlease input the data you want to search\n");
scanf("%d", &key);
i = Search_Seq(T,key);
printf("the search data is locate the %dth(0 indicate can not find)\n",i);
}
展开全部
#include<stdio.h>
int main()
{
int i,a[10],n=0;
for(i=0;i<10;i++)
a[i]=2*i-4*i*i+90;
printf("\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
for(i=0;i<10;i++)
{
if(a[i]<=35&&a[i]>=33)
printf("a[i]=%d,i=%d,it's the %dth number\n",a[i],i,i+1);
n=n++;
if(a[i]<=35&&a[i]>=33)break;
}
printf("times is:%d\n",n);
return 0;
}随便写一个数组,然后用顺序查找法找到那个符合条件的数
int main()
{
int i,a[10],n=0;
for(i=0;i<10;i++)
a[i]=2*i-4*i*i+90;
printf("\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
for(i=0;i<10;i++)
{
if(a[i]<=35&&a[i]>=33)
printf("a[i]=%d,i=%d,it's the %dth number\n",a[i],i,i+1);
n=n++;
if(a[i]<=35&&a[i]>=33)break;
}
printf("times is:%d\n",n);
return 0;
}随便写一个数组,然后用顺序查找法找到那个符合条件的数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include
#include
#define
max_length
100
typedef
int
keytype;
typedef
struct
{
keytype
*elem;
int
length;
}sstable;
//顺序表的存储结构
/*
此算法比第二个算法多了一个判定i是否出界的流程,对于查找数目较少的情况,
二者查找时间相差不大,对于存在大量数据时,该算法的主要查找时间消耗再判
定是否出界上,所以第二个算法明显比第一个算法好,唯一增加的就是一个“哨兵”
数据。
int
search_seq(sstable
st,
keytype
key){
int
i;
for(i=1;
i<=st.length
&&
st.elem[i]
!=
key;
i++
)
;
if(i<=st.length)
return
i;
else
return
0;
}
*/
int
search_seq(sstable
st,
keytype
key){
int
i;
st.elem[0]
=
key;
//“哨兵”,如果顺序表中不存在要查找的数据的话,则查找指针必定指向该哨兵
for(i
=
st.length;
st.elem[i]
!=
key;
i--)
;
return
i;
//找到的话,则i
!=
0,否则i
=
0
}
void
main()
{
int
i,
key;
sstable
t;
t.elem
=
(keytype
*)malloc(sizeof(keytype));
printf("how
many
entries
do
you
want
input\n");
scanf("%d",
&t.length);
for(i=1;
i<=t.length;
i++){
printf("please
input
the
%dth
entries
\n",
i);
scanf("%d",
&t.elem[i]);
}
for
(i=1;
i<=t.length;
i++)
printf("%5d",t.elem[i]);
//显示已经输入的所有数据
printf("\nplease
input
the
data
you
want
to
search\n");
scanf("%d",
&key);
i
=
search_seq(t,key);
printf("the
search
data
is
locate
the
%dth(0
indicate
can
not
find)\n",i);
}
#include
#define
max_length
100
typedef
int
keytype;
typedef
struct
{
keytype
*elem;
int
length;
}sstable;
//顺序表的存储结构
/*
此算法比第二个算法多了一个判定i是否出界的流程,对于查找数目较少的情况,
二者查找时间相差不大,对于存在大量数据时,该算法的主要查找时间消耗再判
定是否出界上,所以第二个算法明显比第一个算法好,唯一增加的就是一个“哨兵”
数据。
int
search_seq(sstable
st,
keytype
key){
int
i;
for(i=1;
i<=st.length
&&
st.elem[i]
!=
key;
i++
)
;
if(i<=st.length)
return
i;
else
return
0;
}
*/
int
search_seq(sstable
st,
keytype
key){
int
i;
st.elem[0]
=
key;
//“哨兵”,如果顺序表中不存在要查找的数据的话,则查找指针必定指向该哨兵
for(i
=
st.length;
st.elem[i]
!=
key;
i--)
;
return
i;
//找到的话,则i
!=
0,否则i
=
0
}
void
main()
{
int
i,
key;
sstable
t;
t.elem
=
(keytype
*)malloc(sizeof(keytype));
printf("how
many
entries
do
you
want
input\n");
scanf("%d",
&t.length);
for(i=1;
i<=t.length;
i++){
printf("please
input
the
%dth
entries
\n",
i);
scanf("%d",
&t.elem[i]);
}
for
(i=1;
i<=t.length;
i++)
printf("%5d",t.elem[i]);
//显示已经输入的所有数据
printf("\nplease
input
the
data
you
want
to
search\n");
scanf("%d",
&key);
i
=
search_seq(t,key);
printf("the
search
data
is
locate
the
%dth(0
indicate
can
not
find)\n",i);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询