/*2014年3月12日*****/
/*折半插入排序******/
#include "stdio.h"
#include"stdlib.h"
#include"time.h"
void BinaryInsetionSort();
#define M 10
int a[M],b,i,j;
void main()
{
srand((int)time(NULL));
printf("随机生成10个0-9的整数: \n");
for(i=1;i<=M;i++)
{
a[i]=rand()/3276;
printf("%d,",a[i]);
}
printf("\n\n");
printf("折半插入排序后: \n");
BinaryInsetionSort();
for(i=1;i<=M;i++)
printf("a[%d]=%d\n",i,a[i]);
}
void BinaryInsetionSort()//折半插入排序
{ int low,high,m;
for(i=2;i<=M;i++)
{a[0]=a[i];
low=1;high=i-1;
while(low<=high){
m=(low+high)/2;
if(a[0]<a[m])high=m-1;
else low=m+1;
}
for(j=i-1;j>=high+1;j--)
a[j+1]=a[j];//记录后移
a[j+1]=a[0];//插入到正确位置
}
}
运行结果:
折半插入排序
最新推荐文章于 2023-09-27 06:00:00 发布