点击查看插入排序思路分析
插入排序核心代码:
/**
* @Title: insertSort
* @Description: 插入排序
* @param nums
*/
public static void insertSort(int nums[]) {
for (int i = 1; i < nums.length; i++) {
// 待插入值
int insertVal = nums[i];
// 待插入值前一个数 下标
int insertIndex = i - 1;
//insertIndex > 0 保证再给insertVal找插入位置时不越界
//insertVal < nums[insertIndex] 待插入的值还没有找到插入的位置
while (insertIndex >= 0 && insertVal < nums[insertIndex]) {
// 待插入值前一个数后移
nums[insertIndex + 1] = nums[insertIndex];
insertIndex--;
}
//退出while循环时,说明插入的位置找到,即insertIndex+1
//判断是否需要赋值
if(insertIndex+1!=i) {
nums[insertIndex + 1] = insertVal;
}
}
}