一、算法思路
1、外层循环:i 0 —> N
保证从0至i-1位置上的元素已经是排好序的
2、内层循环: j i —> 1
负责找到位置i的元素应该处于0—i-1的哪个位置
二、代码实现
void InsertSort(int A[], size_t N)
{
int tmp;
for (int i=0; i<N; i++)
{
tmp = A[i];
for (j=i; j>0 && A[j-1]>tmp; j--)
{
A[j] = A[j-1];
}
A[j] = tmp;
}
}
三、性能分析
1、如果输入的序列是反序的,则插入排序的运行时间为O(N²)
2、如果输入的序列是已经排好序的,则运行时间为O(N)
3、通常情况,输入 的序列比较随机,插入排序的运行时间更接近于O(N²)
本文详细介绍了插入排序算法的基本原理,包括其核心的双层循环机制,通过外层循环保证已排序部分的正确性,并通过内层循环确定待排序元素的位置。此外,还分析了不同输入情况下算法的时间复杂度。
853

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



