声明:码字不易,转载请注明出处,欢迎文章下方讨论交流。
前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督。本篇文章介绍排序算法中插入排序算法,包括插入排序的思路,适用场景,性能分析,java代码等
0、其他排序算法索引(待更)
1、插入排序的思想及原理
插入排序一般分为直接插入排序和二分插入排序,本文只介绍直接插入排序,两者的区别仅在于插入的方式不一样。
插入排序是在待排序数组里插入数据。一般我们认为插入排序就是往一个已经排好序的数列中插入一个元素,使得插入这个数以后,数组仍然有序。
下面具体介绍下插入排序的思路:
首先需要明确待排序的数组由两部分组成,一部分是已经排好序的部分,另一部分是待排序的部分。
接着我们每次选取待排序部分的第一个元素,分别与前面排好序的元素进行比较。当大于前面元素时,可以将该元素直接进入已排好序的部分; 当小于前面元素时,需要把这个元素拿出来暂存,将前面的元素后移,继续与前面的元素相比,直到比较到数组第一个元素或者出现第一个小于拿出的这个元素,这时停止比较、移动,直接把这个元素放到当前空位上。
一直重复步骤2,直到待排元素已经没有元素可进行插入时,停止操作,当前数列为已排好序的数列。
2、插入排序java代码实现
首先最外层必定有个大循环,用于待排序部分的数列。还需要一个内层循环,分别与前面排好序的部分进行比较和移动,直到找到位置可以进行插入。参照扑克牌摸牌后排序
public class InsertSort {