插入排序

master
px5lfyt7f 4 years ago
parent 3f3fa6cbb6
commit 0db00d106c

@ -0,0 +1,38 @@
#include <stdio.h>
int main(void)
{
int a[1000];
int i, j, t, n;
scanf_s("%d", &n);//输入要排序的数的个数
for (i = 0; i < n; ++i)//输入要排序的数
scanf_s("%d", a + i);
for (i = 1; i < n; ++i)
{
t = a[i];
for (j = i - 1; j > -1 && a[j] > t; j--)
{
a[j + 1] = a[j];
}
a[j + 1] = t;
for (j = 0; j < n; ++j)
printf("%-5d", a[j]);
printf("\n\n");
}
return 0;
}
//时间复杂度
//在插入排序中当待排序序列是有序时是最优的情况时间复杂度为O(n)。
//最坏的情况是待排序数组是逆序的时间复杂度为O(n2)。
//插入排序在平均情况运行时间与最坏情况运行时间一样是O(n2)。
//适用场景
//待排序序列的元素个数不多(<=50),且元素基本有序。
//时间小于1s
//插入排序的思想:将初始数据分为有序部分和无序部分,每一步将一个无序部分的数据插入到前面已经排好序的有序部分中,直到插完所有元素为止。
Loading…
Cancel
Save