希尔排序-八大排序(四)

《糊涂算法》之八大排序——希尔排序 希尔排序 阅读详情

不得不说1959希尔提出的这个算法是真的厉害,与前三个算法相比效率上提高了几个数量级
希尔排序(Shell’s Sort)是插入排序的一种又称"缩小增量排序"(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。 希尔排序是非稳定排序算法。

首先写一个ShellSort方法

    public static void  shellSortI(int [] arr){
        for (int gap = arr.length/2; gap >0 ; gap/=2) {
//            从第gap个元素,逐个对其所在的组进行直接插入排序
            for (int i = 1; i <arr.length ; i++) {
                int j=i;//写一个指针j指向i
                int temp=arr[i];//暂存一下待插入的值
                //j-gap>0防止数组下标越界
                // temp<arr[j-gap]与前gap位数比较假如小于 就让前gap位数后移gap位
                while (j-gap>=0&&temp<arr[j-gap]){
                    arr[j]=arr[j-gap];//后移gap位
                    j-=gap;//继续与前前一个数比较
                }
                arr[j]=temp;//大于的话不移动
            }
        }
    }

然后测试

  public static void main(String[] args) {
        int [] arr=new int[80];
        for (int i = 0; i < 80; i++) {
            arr[i]= (int) (Math.random()*100);
        }
        long sta=System.currentTimeMillis();
        System.out.println("开始排序"+sta);
        shellSortI(arr);
        long end = System.currentTimeMillis();
        System.out.println("结束时"+end);
        System.out.println("用时"+(end-sta));
    System.out.println(Arrays.toString(arr));
    }

最后结果图

在这里插入图片描述
tips:通过与前几个算法的比较发现 同时对80000条数据排序所用时间希尔排序(0.02s)插入排序(1.87s)选择排序(7.9s)冒泡排序(21.01s)由此可见算法的魅力所在

【Unity+HoloLens2】从0开始在HoloLens2部署MR工程 HoloLens2部署的权威教程在微软的官方文档中,但有些问题其实官方文档并没有列出,所以在实际开发过程中如果遇到bug,就需要自身或者前人的经验去解决。比如:对于Hololens2来说,在VS中需选择ARM64而不是x86。部署需要有良好的网速;工程打包出来的文件路径和工程路径有关联,如果这两个路径不匹配,部署就会失败。部署后打不开可能是因为Unity中未添加需要部署的场景,在Build Settings中点击Add open Scenes。... 阅读详情

相关推荐

TSC条码打印机C#例程(tsclib.dll调用) 【转】

//----program.cs using System;using System.Collections.Generic;using System.Windows.Forms; using System.Runtime.InteropServices;public class TSCLIB_DLL{[DllImport("TSCLIB.dll", EntryPoint = "abou...

weixin_33843947的博客 2443

八大排序之——希尔排序(四)

概述 图示 代码

187

数字IC设计之时序分析基础概念汇总

时序分析主要有两种办法:静态时序分析: (static timing analysis,STA),是遍历电路存在的所有时序路径,根据给定工作条件(PVT)下的时序库.lib文件计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足约束要求,根据最大路径延时和最小路径延时找出违背时序约束的错误。

weixin_45230720的博客 5607

Python八大排序(四)——希尔排序

代码如下: #4.希尔排序(插入排序) #思想:将待排序数组按照步长gap进行分组,然后将每组的元素利用直接插入排序的方法进行排序,每次将gap折半减小,循环上述操作。 #当gap=1时,利用直接插入,完成排序。 def Shell_sort(num_list): length = len(num_list) gap = length // 2 while gap >...

even160941的博客 259

智慧城市项目实战:如何将你的地理数据从城市坐标系(如上海2000)转换到国家CGCS2000?

本文详细介绍了智慧城市项目中地理数据坐标系转换的全流程解决方案,重点讲解如何将城市坐标系(如上海2000)转换到国家CGCS2000。通过七参数布尔莎模型、ArcGIS Pro、QGIS开源方案及Python编程实现,帮助实施团队解决坐标系不统一的技术难题,确保空间分析精度。

weixin_28725949的博客 307

别再只会调速度了!用STM32的定时器中断精准控制伺服电机转角(避坑指南)

本文详细介绍了如何利用STM32的定时器中断和PWM输出实现伺服电机的精准转角控制,避免常见的速度控制误区。通过硬件配置、脉冲计数逻辑和优化技巧的实战讲解,帮助开发者掌握高精度位置控制方法,适用于工业自动化和机器人控制等场景。

weixin_42531163的博客 418

八大排序-希尔排序(四)

八大排序-希尔排序(四) 希尔排序:他是对插入排序的一个优化,核心的思想就是合理的选取增量,经过一轮排序后,就会让序列大致有序,然后再不断的缩小增量,进行插入排序,直到增量为 1,那整个排序结束。 原理图: 先来一个最基本的希尔排序 import java.util.Arrays; public class ArrayDemo4 { public static void main(String[] args) { //希尔排序:他是对插入排序的一个优化,核心的思想就是

Xun_independent的博客 240

基于STM32和MPU6050的手势控制小车设计与实现

MPU6050传感器:用于检测手势变化,采集加速度和陀螺仪数据。STM32微控制器:处理MPU6050传感器的数据,根据手势变化控制小车的运动。电机驱动模块:接收来自STM32的控制信号,驱动小车的电机,实现小车的前进、后退、左转和右转。小车底盘:作为整个系统的机械部分,提供移动平台。MPU6050是一款集成了3轴加速度计和3轴陀螺仪的传感器,具有高精度、低功耗和小体积等特点。它通过I2C接口与微控制器通信,可以实时采集加速度和角速度数据,广泛应用于运动检测、姿态控制和手势识别等领域。

m0_57781768的博客 2310

希尔排序不稳定例子_八大排序 python实现 精讲(四)希尔排序

昨天讲了插入排序,今天来讲一种插入排序的高效改进版本希尔排序~希尔排序(Shellsort)希尔排序是基于插入排序的两个性质提出了改进办法:1. 插入排序在对已排好序的数据操作时,效率高,即可以达到O(n)线性的效率2. 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位算法思想举一个来自维基百科的例子,很直观:假设有这样一组数[ 13 14 94 33 82 25 59 94 65 ...

weixin_42500963的博客 2341

(九)DFI接口时序

文章目录一、DFI Interface 一、DFI Interface   DFI接口是连接DDR Controller与DDR_PHY之间的通用接口,其信号组如下表:       

Mr.翟的博客 1万+

AppStore逆向分析(登录、查询、下单)

某网站全协议流程逆向与分析(自动登录、激活、查询、下单)

吴秋霖的博客 3031

[数据结构] 八大排序

其基本思想是选择一个基准值,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,然后再递归地对这两部分进行排序,以达到整个数据变成有序序列。是一种简单的排序算法。堆排序的平均时间复杂度为。第二步:cur开始往后走,如果遇到比key小的值,则++prev,然后交换prev和cur指向的元素,再++cur,如果遇到比key大的值,则只++cur。,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

DerrictC的博客 2023

CodeX 登录报错 os error 10013?一键修复 CodeX 无法登录问题(亲测有效)

CodeX 登录时报 os error 10013?本文提供快速修复方案,实测有效,彻底解决登录报错:登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013)的问题💡

XiaoqiangClub的博客 2938

八大排序算法之插入排序+希尔排序

插入排序超进化:希尔排序

小青菜的博客 2641

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【数据结构】八大排序

八大排序

2203_76003626的博客 3483

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【八大排序(十)】八大排序效率与稳定性分析

八大排序效率以及稳定性分析详解,内附八大排序全部代码,以及图文讲解,看完就会的细!

杭电码农-NEO的博客 3054

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【数据结构】八大排序之希尔排序算法

数据结构基本插入排序算法之希尔排序详解.内容包括:希尔排序的简介及实现思路,代码实现,关于时间复杂度的分析.

C/C++领域,数据结构,linux,MySQl学习者 1988

【数据结构--八大排序】之希尔排序

希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法,其也是一种特殊的插入排序,即将简单的插入排序进行改进后的一个更加高效的版本,也称缩小增量排序。

luhaoran814的博客 895

《数据结构初阶》【八大排序——群英荟萃】

博客内容主要划分为:八大排序算法的介绍+八大排序算法的实现。全篇共计1.5w字,涉及的排序算法有:直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序和计数排序。(博主力推,内容绝对详实!!!)

序属秋秋秋的博客 2401

八大排序之希尔排序

希尔排序(shell排序) 希尔排序是插入排序的一种,又称缩小增量排序。是改进版的插入排序 排序原理: 选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组; 对分好组的每一组数据完成插入排序; 减小增长量,最小减为1,重复第二步操作。 Java代码 import java.util.Arrays; public class ShellSort { public static void sort(int[] a){ //确定初始的增量 int h

RwTo的博客 1万+

【八大排序(二)】希尔排序(谁说天才都短命?)

最快的排序之一希尔排序详解.完结撒花

杭电码农-NEO的博客 941

八大排序算法(一)

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;

heyuchang666的专栏 7452

八大排序——宇宙无敌爆炸细致讲解

看这标题应该也知道本篇博客将会是一篇非常炸爽的博客,是的今天的主角就是我们的八大排序!其实关于排序算法,大家应该并不陌生,大部分小伙伴在专门攻克排序这个大板块之前,应该都听说甚至使用过像冒泡排序、选择排序这样的排序算法,对排序这个板块有一定的了解,的确这两个排序算法是八大排序里的两种典型的算法,理解起来相比于其他排序算法更简单,所以非常具有教学意义,但是这两个算法一般而言效率太低了,时间成本太高,所以在做大型项目时,这两个排序算法并不适合。

m0_69062934的博客 1005

js实现八大排序

本文使用js实现数据结构中的八大排序算法:直接插入排序、shell排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序、基数排序,并对比这八种排序算法的时间、空间复杂度以及稳定性,给出我们选择排序算法的主要依据。

YongxiaWu的博客 4843

数据结构之八大排序总结

1、排序的概念:排序就是将一组数据按照一定的顺序,递增或递减排列起来。 2、排序的稳定性:对于两个关键字相等的记录,它们在序列中的相对位置,在排序之前和经过排序之后,没有改变。 3、内部排序与外部排序:内部排序指的是排序时需要将全部数据加载到内存中;外部排序是指所要排序的数据太大了不能同时在内存中进行。 4、八大排序:插入排序、希尔排序、选择排序、快速排序、冒泡排序、堆排序、归并排序、计数排...

一个金牛座 的程序员 8825

【八大排序(一)】插入排序与希尔排序

本篇文章主要介绍了八大排序中的其中两个排序:直接插入排序和希尔排序,以及它们的时间复杂度,稳定性都是需要我们好好掌握的

weixin_69049913的博客 1080
上一篇: 插入排序-八大排序(三)
下一篇: 快速排序-八大排序(五)
来来爱编程
博客等级 码龄7年 375粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值