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

插入排序为啥不行,求指导!!

小x白 发布于 2013-10-23 13:52, 376 次点击
#include <stdio.h>
#include "CreateData.c" //生产随机数的函数
#define ARRAYLEN 10       //需要排序的数据元素数量
void InserSort(int a[],int n)   //直接插入排序
{
     int i,j,t;
     for(i=1;i<n;i++)
     {
     t=a[i];             //取出一个未排序的数据
     for(j=i-1;j>=0  && t<a[j];--j)     //在排序序列中查找位置
       a[j+1]=a[j];                     //向后移动数据
     a[j+1]=t;                          //插入数据到序列
     }
}
int  main()
{
     int i,a[ARRAYLEN];               //定义数组
     for(i=0;i<ARRAYLEN;i++)           //清空数组
       a[i]=0;
     if(!CreateData(a,ARRAYLEN,1,100))     //判断生成随机数是否成功
     {
          printf("生产随即数不成功!\n");
          getch();
          return 1;
   
     }
     printf("原数据:");          //输出生成的随机数
     for(i=0;i<ARRAYLEN;i++)
        printf("%d",a[i]);
     printf("\n");
     InserSort(a,ARRAYLEN);    //调用插入排序函数
     printf("排序后");
     for(i=0;i<ARRAYLEN;i++)   //输出排序后的结果
        printf("%d ",a[i]);
     printf("\n");
     getch();
     return 0
}
1 回复
#2
Osiris92013-10-26 01:13
程序代码:
void insert_sort(int *array, int n)
{
    int i, j;
    int temp;
    for(i = 1; i < n; i++)
    {
        temp = *(array + i);
        for(j = i; j > 0 && *(array + j - 1) > temp; j--)
            *(array + j) = *(array + j - 1);
        *(array + j) = temp;
    }
}
1