关闭

插入排序(Insertsort)之Java实现

标签: 算法排序算法java插入排序
28804人阅读 评论(4) 收藏 举报
分类:

插入排序算法介绍

排序算法是最简单的算法,也是最基本的算法。顾名思义,插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是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);
	}
}
8
0
查看评论

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

直接插入排序的基本操作是将一个记录插入到已经排好的有序表中,从而得到一个新的、记录数增1的有序表。对于给定的一组记录,初始时假定第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直到最后一个记录插到有序序列中为止。
  • jianyuerensheng
  • jianyuerensheng
  • 2016-04-26 21:32
  • 11274

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

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

【Java常用排序算法】插入排序(直接插入排序、希尔排序)

插入排序 直接插入排序 希尔排序
  • donggua3694857
  • donggua3694857
  • 2017-02-25 23:42
  • 698

直接插入排序(java与js版)

插入排序简单来说,就是重新去遍历一组数据,然后在遍历的时候,拿正在遍历的数据和已经遍历过的数据去对比,最后按照某种特定的顺序去排序; 举个简单的例子,大家都玩过斗地主吧,我们把桌子上的牌看成是一个杂乱无序的数组;在我们斗地主的时候,我们会拿刚起的牌和手中的牌进行比较,然后把它插入到指定的位置。这就是...
  • liaodehong
  • liaodehong
  • 2016-07-01 10:13
  • 672

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

生活情景: 不知道大家在生活中是如何思考排序这件事情的,就我来说,在打扑克牌(十三张那种哈)的时候,每拿到派发的一张牌, 就会将这张牌插入到合适的位置,这样每次插完之后就是得到了一次排好序的牌。插入排序就是用了这种思想,先给定一个排好序的序列(通常设定为给定要排序序列的第一个值),然后陆续将后面...
  • Joseph_Cherry
  • Joseph_Cherry
  • 2017-03-07 23:28
  • 835

算法----插入排序(insert sort)

插入排序就是每次选取一个元素插入到已经排序的子数组中,如此循环,直到所有的元素都完成排序。 算法实现: void sort::insert_sort(int* a, const int n) { for(int i=1; i<n; i++) { for(int j=i; j>0 ...
  • shaya118
  • shaya118
  • 2014-11-12 22:40
  • 1393

(直接)插入排序INSERT_SORT

一、伪代码 /*INSERT_SORT(A)*/ for j = 2 to A.length key = A[j] //Insert A[j] into the second sequence A[1..j-1]. i = j-1 while i>0 and...
  • u011852211
  • u011852211
  • 2016-10-05 20:52
  • 818

插入排序(insert_sort)与 并归排序(merge_sort) 算法分析

(一)插入排序 算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-...
  • hustyangju
  • hustyangju
  • 2014-05-09 13:53
  • 1283

插入排序法(InsertSort)c++实现

插入排序法就是把无序区的数据一个一个在有序区里找到自己的位置。这就好比军训时,教官首先让最左边的人站着不动,然后从左边第二个人开始,如果他比第一个人高就不动,否则就排在第一个人的左边。接着看第三个人,把他与前两个人比,然后找到自己的位置,依次下去,直到最后一个人找到自己的位置。c++实现:Inset...
  • justmeh
  • justmeh
  • 2009-10-27 16:30
  • 1791

Java 用两种方法实现插入排序

一、概述:排序算法是最简单的算法,也是最基本的算法。顾名思义,插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是O(n2), 所以并不是最优的排序算法。特点是简单,不需要额外的存储空...
  • lovoo
  • lovoo
  • 2016-06-24 21:10
  • 1698
    个人资料
    • 访问:728223次
    • 积分:6285
    • 等级:
    • 排名:第4655名
    • 原创:75篇
    • 转载:0篇
    • 译文:6篇
    • 评论:166条
    博客专栏
    文章分类
    最新评论