标签:
/* 插入排序 */
void InsertionSort(int a[]) {
int i, j;
for (j = 1; j < 9; j++) {
int item = a[j]; /* 待插入有序数组部分的数 */
for (i = j - 1; i >= 0; i--) {
if (a[i] > item)
a[i + 1] = a[i]; /* 从后往前将有序数组中大于item的元素a[i]后移一位 */
else
break;
}
a[i + 1] = item; /* 将item插入 */
}
}
在最好情况下,输入的数组是已经排好了序的 时间复杂度为O(n).
在最坏情况下,输入的数组是逆序的 时间复杂度为O(n^2).
平均情况下:在已排序的数组a[0~j-1] 中的元素 前一半的元素比a[j]小 后一半的元素比a[j]大. 时间复杂度亦为O(n^2).
插入排序是稳定的。
标签:
原文地址:http://www.cnblogs.com/minesweeper/p/5935745.html