插入排序
- 概念
插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。它的原理有点像平时打扑克牌时,把刚拿到的扑克牌插入到手牌里。
- 步骤
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
- Java代码实现
public class InsertSort {
public void insertSort(Integer arr[]){
//先判断数组元素是否只有一个以下,若只有一个就不用排序
if(arr.length<=1)return;
for(int i=1;i<arr.length;i++){
//由于插入排序是在已排序序列中从后向前扫描,找到相应位置并插入,所以用--
for(int j=i;j>0;j--){
if(arr[j]<arr[j-1]){
int temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
}
public static void main(String[] args) {
Integer arr[] = {7,6,5,2,1,4};
System.out.println("排序前的数组:"+Arrays.toString(arr));
InsertSort insertSort = new InsertSort();
insertSort.insertSort(arr);
System.out.println("排序后的数组:"+Arrays.toString(arr));
//最终输出结果:
//排序前的数组:[7, 6, 5, 2, 1, 4]
//排序后的数组:[1, 2, 4, 5, 6, 7]
}
}