排序----插入排序
Posted ntbll
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序----插入排序相关的知识,希望对你有一定的参考价值。
一.原理
1.1.动态演示图
1.2.动态图讲解
插入排序可以将数组看成两部分,一部分有序,一部分无序;默认下标为0有序,后面无序元素逐一与有序部分比较插入到指定位置,直至数组有序。
1.3.数据样式
原始数据:8 4 7 10 6 5 4 8
第一次排序过程:4 8 7 10 6 5 4 8
第二次排序过程:4 7 8 10 6 5 4 8
......
二.代码实现
public class ArraySortUtils { /** * 返回数组的字符串 * @param array * @return */ public static String arrayToString(int[] array){ StringBuilder sb = new StringBuilder("["); for (int i = 0; i < array.length; i++) { if( i != (array.length - 1)){ sb.append(array[i] + ","); }else{ sb.append(array[i] + "]"); } } return sb.toString(); } /** * 插入排序 * @param array */ public static void insertSort(int[] array){ //将数组看成两部分index>0 index=0 默认index=0有序,将index>0的元素插入到有序中 for(int i = 1; i < array.length;i++){ //记录要插入的数据 int record = array[i]; //将要插入数据与有序部分比较,找到要插入的下标 int j; for(j = i - 1; j >= 0 && record < array[j]; j--){ array[j+1] = array[j]; } array[j+1] = record; System.out.println("第" + i +"次排序后的结果:" + arrayToString(array)); } } }
三.演示结果
public class ArraySortUtilsDemo { public static void main(String[] args) { //4 8 7 10 6 5 4 8 //4 7 8 10 6 5 4 8 int[] array = new int[]{8,4,7,10,6,5,4,8}; System.out.println("排序前:" + ArraySortUtils.arrayToString(array)); //ArraySortUtils.bubbleSort(array); //ArraySortUtils.quickSort(array); ArraySortUtils.insertSort(array); System.out.println("排序后:" + ArraySortUtils.arrayToString(array)); } }
演示结果与数据演示推理一样:
排序前:[8,4,7,10,6,5,4,8]
第1次排序后的结果:[4,8,7,10,6,5,4,8]
第2次排序后的结果:[4,7,8,10,6,5,4,8]
第3次排序后的结果:[4,7,8,10,6,5,4,8]
第4次排序后的结果:[4,6,7,8,10,5,4,8]
第5次排序后的结果:[4,5,6,7,8,10,4,8]
第6次排序后的结果:[4,4,5,6,7,8,10,8]
第7次排序后的结果:[4,4,5,6,7,8,8,10]
排序后:[4,4,5,6,7,8,8,10]
以上是关于排序----插入排序的主要内容,如果未能解决你的问题,请参考以下文章
插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)
直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚