编程论坛
注册
登录
编程论坛
→
数据结构与算法
折半插入排序算法的实现与分析
ailoveying
发布于 2010-06-25 16:34, 889 次点击
1、利用随机函数产生100个三位整数,将这些整数写入到数据文件data1.dat中。
2、从数据文件data1.dat中读出数据,利用折半插入排序算法进行排序。
3、将排好序的数据序列写入写入到数据文件data2.dat中。
2 回复
#2
xichong
2010-06-26 09:59
#include <stdio.h>
void bi_sort(int a[6])
{
int low,high,mid,i,j;
for(i=2;i<=5;i++)
{
a[0]=a[i];
low=1;high=i-1;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]>a[0])
high=mid-1;
else
low=mid+1;
}
for(j=i-1;j>=high+1;j--)
a[j+1]=a[j];
a[high+1]=a[0];
}
}
void main()
{
int a[6],i;
printf("<----------------折半插入排序---------------->\n");
printf("Input data(Please input five int numbers):\n");
for(i=1;i<=5;i++)
scanf("%d",&a[i]);
printf("Output data:\n");
for(i=1;i<=5;i++)
printf("%d ",a[i]);
printf("\n");
bi_sort(a);
printf("After sorting:\n");
for(i=1;i<=5;i++)
printf("%d ",a[i]);
printf("\n");
}
#3
xichong
2010-06-27 18:39
产生随机数的程序:
程序代码:
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
void
main()
{
int
a[
100
],i,rand_value;
srand((
unsigned
)time(NULL));
//
初始化随机数种子
i=
0
;
while
(i<
100
)
{
rand_value=rand()%
1000
;
if
((rand_value>=
100
)&&(rand_value<=
999
))
//
判断产生的随机数是否为三位整数
{
a[i]=rand_value;
i++;
}
else
continue
;
}
printf(
"
<-------------------------随机函数产生的100个三位整数------------------------->\n
"
);
for
(i=
0
;i<
100
;i++)
printf(
"
%d
"
,a[i]);
printf(
"
\n
"
);
}
1