注册 登录
编程论坛 数据结构与算法

折半插入排序算法的实现与分析

ailoveying 发布于 2010-06-25 16:34, 889 次点击
1、利用随机函数产生100个三位整数,将这些整数写入到数据文件data1.dat中。
2、从数据文件data1.dat中读出数据,利用折半插入排序算法进行排序。
3、将排好序的数据序列写入写入到数据文件data2.dat中。
2 回复
#2
xichong2010-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
xichong2010-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