package com.fpy;

import java.util.Arrays;

/**
* 插入排序
* ①. 从第一个元素开始,该元素可以认为已经被排序
* ②. 取出【下一个元素】,在已经排序的元素序列中从后向前扫描
* ③. 如果该元素(已排序)大于新元素,将该元素移到下一位置
* ④. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
* ⑤. 将新元素插入到该位置后
* ⑥. 重复步骤②~⑤
*/
public class InsertSort {
public static void main(String[] args) {
//5 4 3 2 1

int[] arr = new int[5];
//给数组填充数据
createData(arr);
System.out.println("排序前:\t" + Arrays.toString(arr));

for (int i = 1; i < arr.length; i++) {
//要参与比较的值
int ele = arr[i];
int index = i -1;//i 和相邻的数进行比较的下标
//从小到大排序
while(index >=0 && arr[index]>ele){
// 当左边的值 大于要比较的值交换位置
arr[index+1] = arr[index];
//和前面的值继续比较
index--;
}
//将比较的值放入此次最小的位置
arr[index+1] = ele;

}



System.out.println("排序后:\t" + Arrays.toString(arr));

}

private static void createData(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 20 + 1);
}
}
}

插入排序_i++