算法(九)希尔排序

文章目录

  • 希尔排序简介
  • 代码实现

希尔排序简介

  • 希尔排序(shell sort)选定一个小于N(数列长度)的整数gap作为第一增量,然后将所有距离为gap的元素分成一组,然后对每一组的元素进行插入排序。
  • 然后再取一个比前一个增量小的整数作为增量,重复上面的步骤操作…
  • 当增量大小减少到1时候,就相当于对整个序列再进行一次插入排序,然后排序完成。

代码实现

package com.xxliao.algorithms.sort.shell_sort;/*** @author xxliao* @description: 希尔排序* @date 2024/5/30 21:44*/
public class ShellSort {public static void main(String[] args) {int[] array = {1,6,2,6,8,3,8,3,9,3,4,6,56,8};System.out.print("排序前:");printArray(array);sort(array);System.out.print("排序后:");printArray(array);}/*** @description  希尔排序* @author  xxliao* @date  2024/5/30 21:46*/public static void sort(int[] array) {// 定义gap,初始等于lengthint gap = array.length;while(gap > 1) {gap = gap / 2;// 单次gap排序for (int i = 0; i < array.length - gap; i++) {int end = i;int nextItem = array[end+gap];while(end >= 0) {if(array[end] > nextItem) {// 前面的值比后面大,换到后面位置去array[end+gap] = array[end];end = end - gap;// end小于gap时候是退出里层循环,end大于gap的时候是进行下一次的轮询}else {// 前面的值小于等于后面的值,不用替换break;}}array[end+gap] = nextItem;}}}/*** @description  打印数组* @author  xxliao* @date  2024/5/30 21:47*/public static void printArray(int[] array) {for (int i = 0; i <= array.length - 1; i++) {System.out.print(array[i]+" ");}System.out.println();}
}

演示结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(1+X)Java程序设计高级(一)

Throwable&#xff1a;异常的基类&#xff0c;所有异常都继承自 java.lang.Throwable 类&#xff0c;Throwable 类有两个直接子类&#xff1a;Error 类和 Exception 类。Error&#xff1a;是 Java 应用程序本身无法恢复的严重错误&#xff0c;应用程序不需要捕获、处理这些严重…

7.1 Go 错误的概念

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【SQL每日一练】查询二进制树节点

文章目录 题目一、题析二、题解1.MySQL/SqlServer2.Oracle 题目 有一个表BST&#xff0c;其中包含两列&#xff1a;N和P&#xff0c;其中N表示二进制树中节点的值&#xff0c;P是N的父级。 编写一个查询&#xff0c;以查找按节点值排序的二进制树的节点类型。为每个节点输出以…

迅狐跨境电商系统源码:技术栈与多端集成

随着全球化贸易的不断深入&#xff0c;跨境电商系统源码成为了连接不同国家和地区消费者与商家的重要桥梁。本文将探讨跨境电商系统源码的技术栈以及如何通过多端集成来提升用户体验。 技术栈概览 跨境电商系统源码的技术栈是构建高效、稳定平台的基础。以下是构建跨境电商系…

IP65 IP45 IP68等等数字防护等级

第一个数字的代表意义 &#xff1a; 0 表示无防护 &#xff0c;对外界的人或物无特殊之防护 1. 表示防止大于50mm的固体物体侵入 &#xff0c;防止人体&#xff08;如手掌&#xff09;因意外而接触&#xff0c;内部之零件。防止较大尺寸&#xff08;直径大于50mm&#xff09;的…

Oracle数据块如何存储真实数据

上周休假了几天,颓废了,没有输出。今天写一点内容。 先抛出一个问题。表中的数据在Oracle数据块中是如何存储的呢?今天简单说一下这个问题。通常数据库中的表会存储字符,数字,日期 这3种常见的数据类型。下面的例子就用这3种数据类型作说明 首先,Oracle数据块底层存储这…

Github 2024-05-31开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目3Jupyter Notebook项目2Vue项目1Cuda项目1Elixir项目1简单、纯净的C/CUDA中的LLM培训 创建周期:3 天开发语言:Cuda…

OpenCV中的圆形标靶检测——背景概述

圆形标靶 如下图所示,相机标定中我们使用带有固定间距图案阵列的平板,来得到高精度的标靶像素坐标,进而计算得到相机的内参、畸变系数,相机之间的变换关系,和相机与世界坐标系的变换关系(即外参)。 不过标靶的形式多样,从图案类型来看常见的有棋盘格、圆形标靶…

自然语言处理(NLP)神经网络的数据预处理步骤

1. 文本清理&#xff08;Text Cleaning&#xff09; 目的&#xff1a;去除文本中的噪音和无关内容&#xff0c;确保输入数据的质量和一致性。 方法&#xff1a; 去除标点符号&#xff1a;删除文本中的标点符号&#xff08;视任务需求&#xff0c;某些标点符号可能保留&#…

音视频开发13 FFmpeg 音频 相关格式分析 -- AAC ADTS格式分析

这一节&#xff0c;我们学习常用的音频的格式 AAC&#xff0c;重点是掌握 AAC的传输格式 ADTS 头部的信息&#xff0c;目的是 &#xff1a; 当音频数据有问题的时候&#xff0c;如果是AAC的编码&#xff0c;在分析 头部信息的时候能够根据头部信息 判断问题是否出现在 头部。 A…

今天来讲讲,抖音小店商品的上架流程以及优化细节~

大家好&#xff0c;我是喷火龙。 做抖音小店选品选好之后&#xff0c;优化上架商品也是很重要的&#xff0c;也有很多需要注意的细节&#xff0c;今天就来给大家讲讲。 首先&#xff0c;软件采集&#xff0c;大致分为七步。 1. 以抖精灵为例&#xff0c;注册账号登录&#x…

到无穷大和更远,用分形更好

文章目录 一、说明二、分形到底是什么&#xff1f;三、更多更深刻的四、引进无穷小会产生什么样的怪事&#xff1f;五、希尔伯特曲线六、还有什么有趣的要补充的吗&#xff1f; 一、说明 ​​​​​​​数学领域有太多有趣的领域&#xff0c;领域我特别感兴趣。这是一个奇妙的…

orm 查询

问题 rayon,city 地区和市 地区不会空 市可能会空 job_name 工作名称 可能会空 envalid_date 有效期间 一天 一个星期 一个月 不限 四种 offset 分页的每次获取20条数据 在ORM&#xff08;对象关系映射&#xff09;查询中&#xff0c;您需要根据提…

代码随想录算法训练营day41 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分于贪心&#xff0c;贪心没有状态推导&#xff0c;而是从局部直接选最优的 动态规划的解题步骤 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定…

怎么看自己电脑的配置?提升电脑的使用效率

了解自己电脑的配置是非常重要的&#xff0c;它可以帮助您了解电脑的性能水平&#xff0c;从而更好地选择适合的软件和游戏&#xff0c;或者进行系统升级和维护。然而&#xff0c;许多用户可能不知道怎么看自己电脑的配置信息。本文将介绍三种简单的方法&#xff0c;帮助您轻松…

android studio修改字体大小

android studio修改菜单栏、工具栏字体大小 android studio修改编辑框字体大小

常见制氮机的规格的及其特点介绍

制氮机根据其产气量、应用领域和设计特点&#xff0c;可以分为多种规格&#xff0c;满足不同行业的具体需求。以下是一些常见制氮机的规格的及其特点介绍&#xff1a; 制氮机的规格通常以其每小时制氮量进行分类。常见的规格有10L制氮机、50L制氮机、100L制氮机、500L制氮机以及…

复习leetcode第二题:两数相加

本文会给出笔者自己的解答&#xff08;代码较为冗余&#xff0c;其实就是屎山代码&#xff09;以及优秀代码的解析 下图是题目 解法1&#xff08;笔者所使用的办法&#xff09;&#xff1a; 解题思路&#xff1a; 以下思路是基于示例1&#xff08;上图&#xff09;思考的 步骤…

2024年终端安全管理系统最新排名(2024终端安全管理软件TOP5)

在2024年&#xff0c;随着企业数字化转型的加速和网络安全威胁的日益严峻&#xff0c;终端安全管理系统的重要性愈发凸显。终端作为企业数据交互的关键节点&#xff0c;其安全性直接关系到企业的运营和数据的完整性。因此&#xff0c;各大终端安全管理系统厂商纷纷推出新的产品…

基于Vue+Node.js的购物网站设计与实现-计算机毕业设计源码28500

摘 要 近年来&#xff0c;随着移动互联网的快速发展&#xff0c;电子商务越来越受到网民们的欢迎&#xff0c;电子商务对国家经济的发展也起着越来越重要的作用。简单的流程、便捷可靠的支付方式、快捷畅通的物流快递、安全的信息保护都使得电子商务越来越赢得网民们的青睐。现…