package 排序.插入排序;
/**
* @author a1
* 插入排序:将一个数组划分为:有序跟无序两个模块
* 第一个元素默认为有序的,然后遍历数组,剩余的元素为无序的
* 首先从无序的模块中找出第一个元素,然后跟有序的模块比较,找到合适的位置插入进去
* 这就叫插入排序
*/
public class InsertSort {
/**
* 插入排序
* @param arr :待排序的数组
*/
public static void insert(int[] arr){
//待排序的元素找到的合适的位置下标
int index = 0;
//用来保存待插入的元素
int temp = 0;
//遍历无序模块,分别插入
for (int i = 1; i < arr.length; i++) {
//0-index表示有序模块,初始为第一个元素
//让无序模块依次插入
index = i;
//保存当前无序模块待插入的元素
temp = arr[index];
//从后往前遍历有序模块,如果待插入元素比有序模块的元素大的话,有序模块元素后移,直到找到符合条件的位置
for (int j = i - 1; j >= 0; j--) {
//如果该if成立,那么表示当前待插入元素还没有找到合适的位置
//有序元素后移,直到if不成立,说明找到了
//此时我们再把待插入元素插入就好了
if (arr[index] < arr[j]){
//不符合条件的有序模块元素后移
arr[j+1] = arr[j];
//index-- 为了让待插入元素找到合适的位置
index--;
}
//不符合条件的有序模块元素后移一次后,紧接着将待插入元素插入到该位置
arr[index] = temp;
}
}
}
}
JAVA实现插入排序
最新推荐文章于 2024-08-15 14:47:41 发布