插入排序(Insertsort)之Java实现

原创 2013年12月04日 17:07:17

插入排序算法介绍

排序算法是最简单的算法,也是最基本的算法。顾名思义,插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是O(n2), 所以并不是最优的排序算法。特点是简单,不需要额外的存储空间,在元素少的时候工作得好。

插入排序算法Java实现

Java里面有很多数据类型,我们选取的是最简单的整数,但这并不失一般性。即使是自己定制化的对象,实现了java.lang.Comparable, 把对应的 大于号(>)以及小于号(<)换成compareTo即可。

由于需要频繁的操作以及打印数组,先写一个小的数组工具类。代码如下:

public class ArrayUtils {
	
	public static void printArray(int[] array) {
		System.out.print("{");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i]);
			if (i < array.length - 1) {
				System.out.print(", ");
			}
		}
		System.out.println("}");
	}
}

从数组的第二个元素开始,取得当前待处理的元素,插入到当前元素之前的子数组里面,直到数组的末尾。插入排序的Java实现以及测试代码如下:

public class InsertSortTest {
	public static void insertSort(int[] array) {
		if (array == null || array.length < 2) {
			return;
		}

		for (int i = 1; i < array.length; i++) {
			int currentValue = array[i];
			int position = i;
			for (int j = i - 1; j >= 0; j--) {
				if (array[j] > currentValue) {
					array[j + 1] = array[j];
					position -= 1;
				} else {
					break;
				}
			}

			array[position] = currentValue;
		}
	}

	public static void main(String[] args) {
		int[] array = { 3, -1, 0, -8, 2, 1 };
		ArrayUtils.printArray(array);
		insertSort(array);
		ArrayUtils.printArray(array);
	}
}

相关文章推荐

【排序算法】插入排序原理及Java实现

直接插入排序的基本操作是将一个记录插入到已经排好的有序表中,从而得到一个新的、记录数增1的有序表。对于给定的一组记录,初始时假定第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按...

程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)

前几天,看到一篇前辈的博文“程序员必知的8大排序”,不禁的手痒起来,重新翻开严蔚敏老师的《数据结构》复习了一遍,然后一一的用java去实现,其中有不足之处,还望各位道友指正出来。   先来看看8种...
  • pzhtpf
  • pzhtpf
  • 2012年05月12日 11:18
  • 51919

Java实现排序算法之 - 插入排序

生活情景: 不知道大家在生活中是如何思考排序这件事情的,就我来说,在打扑克牌(十三张那种哈)的时候,每拿到派发的一张牌, 就会将这张牌插入到合适的位置,这样每次插完之后就是得到了一次排好序的牌。插...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

插入排序 -JAVA详解

/** * 插入排序是一种简单的排序in-place排序(即只需O(1)的额外空间排序)算法,把数组分为两个子数组, * 一个是已排序好的,一个是为排序的,从未排序的数组中拿出元素然后在已排序数组...

Java使用二分插入排序竟然和直接插入排序速度比较

Java使用二分插入排序竟然和直接插入排序速度比较

排序算法之直接插入排序的思想以及Java实现

1,基本思想 假设待排序的数据是数组A[1….n]。初始时,A[1]自成1个有序区,无序区为A[2….n]。在排序的过程中,依次将A[i] (i=2,3,….,n)从后往前插入到前面已排好序的子数组...

插入排序(java 实现)

前言最近复习数据结构,把插入排序实现了一下,代码如下,欢迎指导。本文链接为http://blog.csdn.net/never_cxb/article/details/49642427,转载请注明出处...

Java排序--插入排序

内部排序(internal sorting):排序工作在主存中完成。     外部排序(external sorting):在磁盘或磁带中完成。     插入排序o(N^2),希尔排序(Sellsor...

java插入排序

插入排序是一个对少量元素进行排序的有效算法。插入排序的工作机制与很多人打牌时,整理手中牌时的做法差不多。 循环不变式与插入算法的正确性 循环不变式主要用来帮组我们理解算法的正确性。对于循环不变式,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:插入排序(Insertsort)之Java实现
举报原因:
原因补充:

(最多只允许输入30个字)