4.6 直接插入排序法

时间:2022-08-19 04:32:21

4-6 InsertSort.c

 1 #include <stdio.h>
 2 #include "4-1 CreateData.c"    //生成随机数的函数
 3 #define ARRAYLEN 10    //需要排序的数据元素数量
 4 void InserSort(int a[],int n)//直接插入排序 
 5 {
 6     int i,j,t;
 7     for(i=1;i<n;i++)
 8     {
 9         t=a[i];     //取出一个未排序的数据 
10         for(j=i-1;j>=0 && t<a[j];--j)     //在排序序列中查找位置 
11             a[j+1]=a[j]; //向后移动数据 
12         a[j+1]=t; //插入数据到序列 
13     }
14 }
15 int main()
16 {
17     int i,a[ARRAYLEN];    //定义数组
18     for(i=0;i<ARRAYLEN;i++)    //清空数组
19         a[i]=0;
20     if(!CreateData(a,ARRAYLEN,1,100))    //判断生成随机数是否成功
21     {
22         printf("生成随机数不成功!\n");
23         getch();
24         return 1;
25     }
26     printf("原数据:");     //输出生成的随机数
27     for(i=0;i<ARRAYLEN;i++)
28         printf("%d ",a[i]);
29     printf("\n");
30     InserSort(a,ARRAYLEN);    //调用插入排序函数
31     printf("排序后:"); 
32     for(i=0;i<ARRAYLEN;i++)    //输出排序后的结果
33         printf("%d ",a[i]);
34     printf("\n");
35     getch();
36     return 0;   
37 }