插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。
它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫面,找到相应位置并插入。
插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后移动,为最新元素提供插入空间。
1#include <stdio.h>
2#include "CreateData.c" //生成随机数的函数
3#define ARRAYLEN 10 //需要排序的数据元素数量
4
5void InsertSort(int a[], int n)
6{
7 int i,j,t;
8 for(i=1;i<n;i++)
9 {
10 t=a[i]; //去除一个未排序的数据
11 for(j=i‐1;i>=0 && t<a[j];‐‐j) //在排序序列中查找位置
12 a[j+1]=a[j]; //向后移动数据
13 a[j+1]=t; //插入数据到序列
14 }
15}
16
17int main()
18{
19 int a,a[ARRAYLEN]; //定义数组
20 for(i=0;i<ARRAYLEN;i++) // 清空数组
21 a[i]=0;
22 if(!CreateData(a,ARRAYLEN,1,100)) //判断生成随机数是否成功
23 {
24 printf("生成随机数不成功!\n");
25 getch();
26 return 1;
27 }
28 printf("原数据:"); //输出生成的随机数
29 for(i=0;i<ARRAYLEN;i++)
30 printf("%d ",a[i]);
31 printf("\n");
32 InsertSort(a,ARRAYLEN); //调用插入排序函数
33 printf("排序后:");
34 for(i=0;i<ARRAYLEN;i++) //输出排序后的结果
35 printf("%d ",a[i]);
36 printf("\n");
37 getch();
38 return 0;
39}。