学习简要笔记:直接插入排序的基本操作是向有序表中插入一个记录,在直接插入排序中,插入位置的确定是通过对有序表中关键码的顺序比较得到的。
排列顺序:从小到大
#include<stdio.h>
void directInsertSort();
int main()
{ int n;
int a[10000];
scanf("%d",&n);
int k=0;
for(k=1;k<=n;k++)
{
scanf("%d",&a[k]);
}
directInsertSort(a,n);
int z=1;
for(z=1;z<=n;z++)
{
printf("%d ",a[z]);
}
return 0;
}
void directInsertSort(int a[],int n)
{
int i=0;
int j=0;
for(i=2;i<=n;i++)
{
if(a[i]<a[i-1])
{
a[0]=a[i];
for(j=i-1;a[0]<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=a[0];
}
}
}
基本思想:
第一步:逐步比较每一趟是否需要进行插入操作——if(a[i]<a[i-1]),如果是进行第二步,否则重复第一步;
第二步:设置监测哨 a[0]=a[i];
第三步:将监测哨(待插入记录值)逐个与前面记录比较,如果监测哨小于前面的——a[0]<a[j],则将当前记录后移,否则进行第四步;
第四步:将数据插入到合适位置。
时间复杂度:O(n2)。
运行结果: