顺序查找及折半查找
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/* HELLO.C -- Hello, world */
#include "stdio.h"
#include "conio.h"
#define ok 1
#define error 0
#define EQ(a,b) ((a)=(b))
#define LT(a,b) ((a)<(b))
#define initsize 20
#define overflow 0
typedef int status;
typedef struct{
int key;
int yuwen;
int shuxue;
int waiyu;
char xingming;
}selemtype;
typedef struct{
selemtype *elem;
int length;
}sstable;
status creat(sstable *st){
int i;
st->elem=(selemtype *)malloc(initsize*sizeof(selemtype));
if(!st->elem)
exit(overflow);
printf("shu ru biao chang:\n");
scanf("%d",&st->length);
for(i=1;i<=st->length;i++)
{printf("shu ru di %d ge xue sheng de xuehao xingming he yuwen shuxue waiyu chengji:\n",i); scanf("%d%s%d%d%d",&st->elem[i].key,&st->elem[i].xingming,&st->elem[i].yuwen,&st->elem [i].shuxue,&st->elem[i].waiyu);}
return ok;
}
int search(sstable st,int key){
int i;
st.elem[0].key=key;
for(i=st.length;!EQ(st.elem[i].key,key);--i);
return i;}
void insert(sstable *st){
int i,j;
for(i=2;i<=st->length;i++)
if(LT(st->elem[i].key,st->elem[i-1].key))
{ st->elem[0]=st->elem[i];
st->elem[i]=st->elem[i-1];
for(j=i-2;LT(st->elem[0].key,st->elem[j].key);--j)
st->elem[j+1]=st->elem[j];
st->elem[j+1]=st->elem[0];
}}
int partition(sstable *st,int low,int high){
int pivotkey;
st->elem[0]=st->elem[low];
pivotkey=st->elem[low].key;
while(low {while(low st->elem[low]=st->elem[high]; while(low st->elem[high]=st->elem[low];} st->elem[low]=st->elem[0]; return low; } void qsort(sstable *st,int low,int high){ int pivotloc; if(low pivotloc=partition(st,low,high); qsort(st,low,pivotloc-1); qsort(st,pivotloc+1,high); }} void jiandanselect(sstable *st){ int k,j,i; selemtype a; for(i=1;i j=i; for(k=i+1;k<=st->length;++k) if(st->elem[k].key if(i!=j){a=st->elem[i],st->elem[i]=st->elem[j];st->elem[j]=a;}} } void bianli(sstable st){ int i; printf("shu chu pai xu hao de xu lie:\n"); for(i=1;i<=st.length;i++) printf("%d%s%d%d%d",st.elem[i].key,st.elem[i].xingming,st.elem[i].yuwen,st.elem[i].shuxue,st.e lem[i].waiyu); } int zhebansearch(sstable st,int key){ int low,high,mid;