huangfox

冰冻三尺,非一日之寒!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一)定义

直接插入排序( straight insertion sort )是一种最简单的排序方法。它的基本操作是将一个记录插入到一个长度为 m (假设)的有序表中,使之仍保持有序,从而得到一个新的长度为 m + 1 的有序表。

例如:

 

二)插入排序实现(java)

// 升序
	public static void sort(int[] a) {
		for (int i = 1; i < a.length; i++) {
			int j = i;
			int temp = a[j];
			while (j > 0 && temp < a[j - 1]) {
				a[j] = a[j - 1];
				j--;
			}
			a[j] = temp;
		}
	}

	public static void main(String[] f) {
		int[] a = new int[25];
		Random random = new Random();
		for (int i = 0; i < a.length; i++) {
			a[i] = random.nextInt(1000);
		}
		InsertSort.sort(a);
		for (int a_ : a)
			System.out.println(a_);
	}

此算法外循环 n-1 次,在一般情况下内循环平均比较次数的数量级为O(n) ,所以算法总时间复杂度为O(n2) 。

插入排序的过程中比较的过程就是一个查找的过程,为了更加快速的找到“合适的位置”,可以使用高效些的查找算法,例如和折半查找结合,就形成了折半插入排序。

 

 

posted on 2012-06-28 15:28  huangfox  阅读(376)  评论(0编辑  收藏  举报