码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序

时间:2016-10-07 13:56:19      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

/* 插入排序 */
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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!