插入排序算法
/**
- 插入排序算法:
- 分析:
- 1.插入排序算法,大哥比喻就像是打扑克排,拿到第一张后,后面的每一张都进行一次排序。
- 2.即第一个数不需要参与,需要进行n-1次循环
- 3.其中比较重要的就是一个 插入者和被插入者,
- 被插入者(每比较一次就向前移动一位)通过不断的与插入者比较,最后确定插入者应该去的位置,然后跳出while循环为其赋值
*/
public class InsertSort {
public static int[] insertSort(int[] arr){
// 第一个数就相当于是被排序过的,所以进行n-1次循环
for (int i=1;i<arr.length;i++){
// 将即将进行排序的数(插入数)记录。
int insert=arr[i];
// 记录将被插入的index
int index=i-1;
// 插入数是否小于被插入数
while (insert<arr[index] && index>=0){
// 如果当前数小于被插入数,则被插入数向后移动一位。
arr[index+1]=arr[index];
// 将index向前移动
index--;
}
// 不执行循环则表示,当前数比前面的数都大,或者index=-1;则 arr[index+1]=insert;
// 跳出循环表示插入数比当前的被插入数大,则 arr[index+1]=insert;
// 亦或者是index=-1,表示当前数是最小的数,则 arr[index+1]=insert;
// 综上所述,
arr[index+1]=insert;
}
return arr;
}