Welcome

首页 / 软件开发 / 数据结构与算法 / 常见排序算法的实现(一)-插入排序

常见排序算法的实现(一)-插入排序2010-06-09 C++博客 那谁插入排序是最简单最直观的排序算法了,它的依据是:遍历到第N个元素的时候前面的N-1个元素已经是排序好的了,那么就查找前面的N-1个元素把这第N个元素放在合适的位置,如此下去直到遍历完序列的元素为止.

算法的复杂度也是简单的,排序第一个需要1的复杂度,排序第二个需要2的复杂度,因此整个的复杂度就是

1 + 2 + 3 + ... + N = O(N ^ 2)的复杂度.

// 插入排序
void InsertSort(int array[], int length)
{
int i, j, key;

for (i = 1; i < length; i++)
{
key = array[i];
// 把i之前大于array[i]的数据向后移动
for (j = i - 1; j >= 0 && array[j] > key; j--)
{
array[j + 1] = array[j];
}
// 在合适位置安放当前元素
array[j + 1] = key;
}
}