思路:
从前往后,需要N-1趟,对于P=1趟到P=N-1趟,保证从位置0到
位置P-1上的元素已经排序,对于第P趟,将位置P上的元素插入到已经排过序的0到 P-1之间。
插入的时候通过将P为位置上的元素存于tmp中,从已经排序的元素中从后往前比较,只要比tmp大,就后移一位,直到找到正确的插入位置,将tmp插入。
时间复杂度:
平均, ; 最好 ,
;最坏,
程序:
void insert_sort(int array[],int array_size)
{
int i,j,tmp;
for(i=1;i<array_size;i++)
{
tmp=array[i];
for(j=i;j>0&&array[j-1]>tmp;j--)
array[j]=array[j-1];
array[j]=tmp;
}
}
#include <stdio.h>
int main()
{
int i;
int array[]={100,96,88,75,63,52,41,36,28,19,6,0,-19,-105};
int array_size=sizeof(array)/sizeof(int);
printf("Original array:\n");
for(i=0;i<array_size;i++)
printf(" %d, ",array[i]);
printf("\n");
insert_sort(array,array_size);
printf("Sorted array:\n");
for(i=0;i<array_size;i++)
printf(" %d, ",array[i]);
printf("\n");
return 0;
}
参考:
https://www.runoob.com/w3cnote/insertion-sort.html
本文介绍插入排序算法,思路是从前往后进行N - 1趟排序,每趟保证0到P - 1位置元素有序,将P位置元素插入合适位置。还提及了插入排序的平均、最好和最坏时间复杂度,并给出了参考链接。
226

被折叠的 条评论
为什么被折叠?



