/**
* 需要排序列表:{12,42,6,7,4,3,25};
*
* 原理:
* 1.将需要排序的列表分为两个列表,一个有序列表, 一个无序列表,有序列表 元素为1个,无序列表元素为N-1个
* 2.取出无序列表元素,在有序列表中找到合适的位置进行插入
* 示例:
* 需要排序列表为:{12,42,6,7,4,3,25}
* 有序列表为:{12}
* 无序列表为:{42,6,7,4,3,25}
*
* 步骤:
* 1.int insertVlue = arr[i]; 假定需要插入的数据
* 2.int insertIndex = i-1; 假定需要插入的位置
* 3.为需要需要插入的元素找到合适的位置
* 3.1 insertIndex>=0 防止数组越界
* 3.2 insertVlue < arr[insertIndex] 需要插入的元素是否小于它前一个元素
* 3.3 arr[insertIndex + 1] = arr[insertIndex] 如果小于则将前一个元素往后移动一位
* 3.4 insertIndex --; 通过递减下标,需要插入数据逐一与其前面的数做到对比,通过此方式来找到适合的位置进行插入
* 4. arr[insertIndex+1] = insertVlue; 进行插入
* @param arr
*/
public static void insertSort(int[] arr){
for (int i = 1; i < arr.length; i++) {
//需要插入的元素
int insertVlue = arr[i];
//假定需要插入的下标
int insertIndex = i-1;
while (insertIndex>=0 && insertVlue < arr[insertIndex]){
arr[insertIndex + 1] = arr[insertIndex];
insertIndex --;
}
if(insertIndex +1 != i){
arr[insertIndex+1] = insertVlue;
}
}
}
插入排序
最新推荐文章于 2023-09-23 17:47:53 发布