插入排序主要思想就是:将元素插入到一个顺序数组中;
1.我们先将原数组看成一个有序数组和一个无序数组;我们将数组第一个元素看成有序数组,将一个数组后面的看成一整个无序数组;
2我们将顺序数组的个数设为edn,从第二个元素开始遍历无序数组,将遍历的当前元素和end前面的有序数组从后向前进行比较 ;若当前元素小于比较的有序元素时,将 有序数组元素后移一位,继续向前进行比较直到大于当前有序数组元素确定当前元素位置;
3若当前元素大于有序数组最后一个元素时直接将当前元素加到有序数组最后一位
#include <stdio.h>
int main()
{
int a[]={3,4,85,6,2,9,14,45,2,6,698,2,5,51,6,1};
int len=sizeof(a)/sizeof(int);
for (int i=1;i<len;i++)
{
int end=i-1;//已经排序好元素的最后一位下标
int temp=a[i];//准备进行插入的元素
while(end>=0)//
{
if(temp<a[end])//当前元素与排列好的数组从后向前比
{
//当前元素小于数组最后一个元素时,数组最后一个元素向后移动
a[end+1]=a[end];//继续向下个数组元素进行比较
end--;
}
else//大于数组元素时直接跳出循环
{
break;
}
}
a[end+1]=temp;
}
for(int i=0;i<len;i++)
printf("%d ",a[i]);
}