问答题 如何进行插入排序
【正确答案】
【答案解析】对于给定的一组记录,初始时假设第一个记录自成一个有序序列,其余的记录为无序序列;接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。以数组{38,65,97,76,13,27,49}为例,直接插入排序具体步骤如下:
第一步插入38以后:[38] 65 97 76 13 27 49
第二步插入65以后:[38 65] 97 76 13 27 49
第三步插入97以后:[38 65 97] 76 13 27 49
第四步插入76以后:[38 65 76 97] 13 27 49
第五步插入13以后:[13 38 65 76 97] 27 49
第六步插入27以后:[13 27 38 65 76 97] 49
第七步插入49以后:[13 27 38 49 65 76 97]
程序示例如下:
#include<stdio.h>
void InsertSort(int par_array[],int array_size)
{
int i,j;
int temp;
for(i=1;i<array_size;i++)
{
temp=par_array[i];
for(j=i-1;j>=0;j--)
{
if(temp<par_array[j])
{
par_array[j+1]=par_array[j];
}
else
break;
par array[j+1]=temp;
}
int main()
{
int i=0;
int a[] ={5,4,9,8,7,6,0,1,3,2};
int len=sizeof(a)/sizeof(a[0]);
InsertSort(a, len);
for(i=0;i<len; i++)
printf("%d", a[i]);
printf("n");
return 0;
}
程序输出结果:
0 1 2 3 4 5 6 7 8 9