2分法插入排序

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

#include

#define maxsize 100

typedef int datatype;

typedef struct{

datatype a[maxsize];

int size;

}sequence_list;

void init_sequence_list(sequence_list *slt)

{

slt->size=1;

}

void insert_sequence_list(sequence_list *slt,datatype x) {

if(slt->size==maxsize)

printf("表满,无法插入!");

slt->a[slt->size]=x;

slt->size++;

}

void print_sequence_list(sequence_list slt)

{

int i;

if(slt.size==1)

printf("\n表是空的!");

else

for(i=1;i

printf("%5d",slt.a[i]);

}

void insert_num_sequence_list(sequence_list *slt) {

int x,i,j=1;

printf("\n请输入插入数的个数:");

scanf("%d",&i);

do

{

scanf("%d",&x);

insert_sequence_list(slt,x);

j++;

}while(j<=i);

}

void binarysort(sequence_list *slt)

{

int i,j,left,right,mid;

for(i=2;i<=slt->size;i++)

{

slt->a[0]=slt->a[i];

left=1;

right=i-1;

while(left<=right)

{

mid=(left+right)/2;

if(slt->a[0]a[mid])

right=mid-1;

else

left=mid+1;

}

for(j=i-1;j>=left;j--)

slt->a[j+1]=slt->a[j];

slt->a[left]=slt->a[0];

}

}

void main()

{

int i;

sequence_list slt;

init_sequence_list(&slt);

insert_num_sequence_list(&slt);

printf("表为:\n");

print_sequence_list(slt);

printf("\n");

binarysort(&slt);

for(i=2;i<=slt.size;i++)

printf("%5d",slt.a[i]);

printf("\n");

}

相关文档
最新文档