插入排序之折半插入排序、希尔排序

1.折半插入排序:

  • 折半插入排序实际上是对直接插入排序的优化,通过折半查找来找到要插入的位置,再搬移元素,最后插入即可。
  • 思路分析:
  • 定义low为有序部分的第一个位置,high为有序部分的最后一个位置,通过折半查找的方法,不断更新low和high的位置,直到 low>high,此时high+1即为我们要插入的位置。
  • 直接插入排序是在每一次比较时,就进行数据的搬移;而折半插入排序是在找到插入位置后,通过循环一次性将high+1位置的元素到有序部分的最后一个元素j进行搬移,最后插入本次的value值到high+1位置。
  • 代码实现如下:
package www.first;

import java.util.Scanner;

public class HalfInsertSort {
   
    public static void halfInsertSort(int[] arr){
   
        if(arr.length<=1||arr==null){
   
            return;
        }else{
   
            //i为无序部分的第一个元素位置
            for(int i = 1;i<arr.length;i++){
   
                //存储无序元素的值,方便比较
                int value = arr[i];
                //有序部分的第一个元素位置
                int low = 0;
                //有序部分的最后一个元素位置
                int high = i-1;
                while(low<=high){
   
                    int mid 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值