package sort;
import java.util.Arrays;
/**
* 直接插入排序:选择第一个元素为基准,当做已排序部分,依次将后续元素插入至其正确位置,使有序部分长度逐渐加一,最终实现整个数组的排序
* @author:zhaidc@qq.com
* @date:2022年2月26日 下午9:11:08
*/
public class InsertSort {
//测试方法
public static void main(String[] args) {
int[] arr = {2,1,3,5,4,-1,0,8};
insertSort(arr);
System.out.print(Arrays.toString(arr));
}
/**
* 直接插入排序
* @param arr 待排序数组
*/
private static void insertSort(int[] arr) {
//将首位当作有序部分,从第二个元素开始遍历
for(int i = 1;i < arr.length;i++) {
//若当前元素比前一位元素小,则
if(arr[i] < arr[i - 1]) {
//当前元素备份为tmp
int tmp = arr[i];
int j = i - 1;
//后续遍历当前元素前面的元素,若比当前元素大,则数值后移,形成空位;反之结束循环
for(;j >= 0 && arr[j] > tmp;j--) {
//数值后移
arr[j + 1] = arr[j];
}
//将tmp,即当前元素置于空位处
arr[j + 1] = tmp;
}
}
}
}
直接插入排序——Java实现
于 2022-02-26 22:07:07 首次发布