(╥╯^╰╥)

 

 1 /*
 2 请设计直接插入排序算法函数void insertSort(int a[],int n),对a[1]..a[n]进行升序排序。
 3 并测试在不同数据规模下的排序效率。
 4 */
 5 #include "Arrayio.h"
 6 #define N 10000     /*N为数据量大小,因data1.txt中只有50万个数,所以自行设定N值时需让N<=500000*/
 7 
 8 /*请将本函数补充完整,并进行测试*/
 9 void insertSort(int a[],int n)
10 {
11     /*直接插入排序*/
12     int i;
13     for(i=2; i<=n; i++)
14     {
15         if(a[i]<a[i-1])
16         {
17             int j = i-1;
18             int tmp = a[i];
19             while(tmp<a[j])
20             {
21                 a[j+1] = a[j];
22                 j--;
23             }
24             a[j+1] = tmp;
25         }
26     }
27 }
28 
29 int  main()
30 {
31     int a[N+1],n;                     /*数据存储在a[1]...a[N]中*/
32     printf("数据初始化...\n");
33     n=readData(a,N,"data1.txt");      /*从data1.txt中读入N个整数存入数组a,n为实际读入的数据个数*/
34     printf("%d个数据排序中...\n",n);
35     insertSort(a,n);
36     saveData(a,n,"out.txt");          /*排序结果存放在out.txt文件中*/
37     printf("排序结束,排序结果保存在out.txt文件中。\n");
38     return 0;
39 }
直接插入排序

相关文章: