引用大佬的解释插入排序的概念如下:
将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。
对插入排序的个人理解:
对一个已知数组,首先规定一个排序方式,如从大到小或从小到大等(以下以从大到小为例)。将第一个元素视为规定排序方式后有序数组的第一个元素,然后从第二个元素开始依次对前面的所有元素进行从后到前的比较,直到找到一个位置使该元素满足规定排序规则为止。
如将216354进行从小到大排序,其过程为:
原数组:216354
第一步:126354 2和1比较
第二步:126354 6和2比较,6和1比较
第三步:123654 3和6比较,3和2比较
第四步:123564 5和6比较,5和3比较
第五步:123456 4和6比较,4和5比较,4和3比较
结束
利用代码进行排序算法的函数实现如下
void sort(int a[],int n)
{
for(int i=1;i<n;i++)
{
int j=i-1;
int k=a[i];
while(j>=0 && a[j]>k)
{
a[j+1]=a[j];
j--;
}
a[j+1]=k;
}
}