顺序查找及折半查找

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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(lowelem[high].key>=pivotkey)--high;

st->elem[low]=st->elem[high];

while(lowelem[low].key<=pivotkey)++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;ilength;i++){

j=i;

for(k=i+1;k<=st->length;++k)

if(st->elem[k].keyelem[j].key)j=k;

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;

相关文档
最新文档