1、从第一个元素开始,该元素可以认为已经被排序。2、取出下一个元素,在已经排序的元素序列中从后向前扫描。3、如果该元素(已排序)大于新元素,则将该元素移到下一位置。4、重复步骤3,直到找到已排序的元素小于或者大于新元素的位置。5、将新元素插入到该位置。6、重复步骤2。
public class InsertSortTest { public static void InsertSort(int[] source) { int i, j; int insertNode;// 要插入的数据 // 从数组的第二个元素开始循环将数组中的元素插入 for (i = 1; i < source.length; i++) { // 设置数组中的第2个元素为第一次循环要插入的数据 insertNode = source[i]; j = i - 1; // 如果要插入的元素小于第j个元素,就将第j个元素向后移 while ((j >= 0) && insertNode < source[j]) { source[j + 1] = source[j]; j--; } // 直到要插入的元素不小于第j个元素,将insertNote插入到数组中 source[j + 1] = insertNode; System.out.print("第" + i + "趟排序:"); printArray(source); } } private static void printArray(int[] source) { for (int i = 0; i < source.length; i++) { System.out.print("\t" + source[i]); } System.out.println(); } public static void main(String[] args) { int source[] = new int[] { 53, 27, 36, 15, 69, 42 }; System.out.print("初始关键字:"); printArray(source); System.out.println(""); InsertSort(source); System.out.print("\n\n排序后结果:"); printArray(source); } }
初始关键字: 53 27 36 15 69 42 第1趟排序: 27 53 36 15 69 42 第2趟排序: 27 36 53 15 69 42 第3趟排序: 15 27 36 53 69 42 第4趟排序: 15 27 36 53 69 42 第5趟排序: 15 27 36 42 53 69 排序后结果: 15 27 36 42 53 69
==================================================================================================
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng
==================================================================================================
我的Java开发学习之旅------>Java经典排序算法之插入排序
原文地址:http://blog.csdn.net/ouyang_peng/article/details/46547091