算法与数据结构的顺序查找
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)