import java.util.Arrays;
//插入排序核心是目标元素从目标位向前对比,因此目标位之前的子数组要倒序遍历
public class InsertSort {
public static void main(String[] args) {
int[]arr={5,1,6,2,4,4,8,3,7};
insertSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void insertSort(int[]arr){
//默认第一个元素是排好序的
for (int i = 1; i < arr.length; i++) {
int target=arr[i];
int j;
//变量j用于记录目标元素之前的数组的结尾,只要目标元素小于arr[j],就一直倒序检索
for(j=i-1;(j>=0)&&(target<arr[j]);j--){
//比目标数大的数依次后移,子数组结尾的元素覆盖了目标数,不过一开始目标数就取出来了
arr[j+1]=arr[j];
}
//(j>=0)&&(target<arr[j]),不满足条件时:即目标数>=当前比较的数,目标数不动。前面j=i-1,下面再+1就是没有动
arr[j+1]=target;
}
}
}
java插入排序,详细注释,代码实现
最新推荐文章于 2022-10-11 23:30:06 发布