算法与数据结构的顺序查找

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#define MAX 31

typedef struct

{int*k;

int*elem;

char*aa;

int length;

}SSTable;

int lw_Search(SSTable ST,int key)

{

int i;

ST.elem[0]=key;

for(i=ST.length;ST.elem[i]!=ST.elem[0];--i);

return i;

}

int lw_Search2(SSTable ST,int n,int key)

{

int low=1;int high=ST.length;int mid,a=0;

while(low<=high)

{

mid=(low+high)/2;

printf("第%d次查找:在[%d,%d]中找到元素

ST[%d]: %d\n",++a,low,high,mid,ST.k[mid]);

if(ST.k[mid]==key)

return mid;

else if(ST.k[mid]>key)

high=mid-1;

else

low=mid+1;

}

return 0;

}

int lw_bubble(SSTable ST,int n)

{int i,j,temp;int*a;

for(i=1;i

for(j=i+1;j<=n;j++)

if(ST.k[i]>ST.k[j])

{

temp=ST.k[i];

ST.k[i]=ST.k[j];

ST.k[j]=temp;

}

}

int lw_prit(SSTable ST,int n)

{

int i;int*a;

for(i=1;i

printf("%-8d",ST.k[i]);

printf("\n");

}

char lw_Search3(SSTable ST,char key)

{

int i;

ST.aa[0]=key;

for(i=ST.length;ST.aa[i]!=ST.aa[0];--i);

return i;

}

char lw_Search4(SSTable ST,int n,char key) {

int low=1;int high=ST.length;int mid,a=0;

while(low<=high)

{

mid=(low+high)/2;

printf("第%d次查找:在[%d,%d]中找到元素ST[%d]: %c\n",++a,low,high,mid,ST.k[mid]);

if(ST.k[mid]==key)

return mid;

else if(ST.k[mid]>key)

high=mid-1;

else

low=mid+1;

}

return 0;

}

char lw_bubble2(SSTable ST,int n)

{int i,j;char temp;

for(i=1;i

for(j=i+1;j<=n;j++)

if(ST.k[i]>ST.k[j])

{

temp=ST.k[i];

ST.k[i]=ST.k[j];

ST.k[j]=temp;

}

}

char lw_prit2(SSTable ST,int n)

{

int i;

for(i=1;i

printf("%5c",ST.k[i]);

printf("\n");

}

void main()

{

int i,j,n=5,min,t;

int*m;

SSTable ST;

int key,flag,w;

char num,r;

SSTable name;//[]={'l','i','w','e','i'},w;

printf("------以下是顺序查找10电信(2)班同学的学号------\n");

printf("请输入10电信(2)班的人数: ");

scanf("%d",&ST.length);

ST.elem=(int*)malloc(10*sizeof(int*)(ST.length));

ST.k=(int*)malloc(10*sizeof(int*)(ST.length));

for(i=1;i<=ST.length;i++)

{printf("请输入第%d个同学的学号: ",i);

scanf("%d",&ST.elem[i]);

}

for(i=1;i<=ST.length;i++)

{printf("%-8d",ST.elem[i]);

ST.k[i]=ST.elem[i];

}

printf("\n请输入要查找的学号: ");

scanf("%d",&key);

//ST.elem[0]=key;

flag=0;

flag=lw_Search(ST,key);

if(flag)

相关文档
最新文档