十大排序——7.希尔排序

server/2024/9/25 6:18:57/

下面我们来看一下希尔排序

目录

1.介绍

2.代码实现

3.总结与思考


1.介绍

希尔排序是插入排序的一种优化,可以理解为是一种分组的插入排序

希尔排序的要点:

简单来说,就是分组实现插入,每组元素的间隙称为gap,一开始给你一个无序数组,然后我们以gap为间隙对这个数组进行分组,然后在每组内对数据进行排序,这就实现了每组的数据有序性。然后,我们减小gap的值,然后再分组,再对每组内的数据进行排序,直到gap为1完成排序。希尔排序是对插入排序的优化,可以让元素跟快的交换到最终位置。

举例说明:

如下图所示,一开始是无序数组,8个元素,然后我们分为4组,gap值为4,序号1的图;然后在这四组内进行排序,实现了组内有序,序号2的图;然后我们再分组,分为6组,gap值为2,序号3的图;然后再排序,再次实现了组内有序,序号4的图;依次类推,直到gap值为1,数组就排好序了。

2.代码实现

下面看一下代码的实现:

package Sorts;import java.util.Arrays;
//希尔排序
public class XiErSort {public static void main(String[] args) {int [] arr = new int []{5,9,2,7,3,1,10};xiEr(arr);System.out.println(Arrays.toString(arr));}public static void xiEr(int arr[]){for (int gap = arr.length/2; gap >0 ; gap /=2) {for (int low = gap; low <arr.length ; low++) {int t = arr[low];int i = low - gap;//自右向左找插入位置,如果比待插入的元素大,则不断右移,空出插入位置while (i >= 0 && t < arr[i]){arr[i+gap] = arr[i];i-=gap;}//找到插入位置if(i != low-gap){arr[i+gap] = t;}}}}
}

3.总结与思考

不算难,就是插入排序的一个优化,结合代码来看很好理解的。


http://www.ppmy.cn/server/11236.html

相关文章

比特币铭文铸造:数字货币的未来与挑战

比特币铭文铸造是一种创新的技术&#xff0c;它通过将比特币区块链上的交易信息转化为数字铭文&#xff0c;并将其铸造到实体货币中&#xff0c;从而实现了数字货币与实物资产的有机结合。这一技术不仅为比特币的未来发展开辟了新的道路&#xff0c;也为整个数字货币行业带来了…

有关栈的练习

栈练习1 给定一个栈&#xff08;初始为空&#xff0c;元素类型为整数&#xff0c;且小于等于 109&#xff09;&#xff0c;只有两个操作&#xff1a;入栈和出栈。先给出这些操作&#xff0c;请输出最终栈的栈顶元素。 操作解释&#xff1a; 1 表示将一个数据元素入栈&#xff…

图像处理技术与应用(一)

图像处理技术与应用入门 使用skimage进行图像读取和显示 skimage库&#xff08;Scikit-image&#xff09;提供了一个强大的工具集&#xff0c;用于执行各种图像处理任务。以下是如何使用skimage读取和显示图像的基本示例&#xff1a; from skimage import ioimg io.imread(…

2024 年中国VR行业研究报告

核心内容&#xff1a; 概述了当前 VR 行业的发展阶段、市场规模、产业环节及趋势&#xff0c;并对核心硬件、软件技术、内容应用等方面进行了详细介绍和分析。 概述&#xff1a; 1、行业发展阶段&#xff1a;新旧玩家推陈出新&#xff0c;特别是 Vision Pro 产品的问世&…

山东专升本计算机基础 --- Windows 10 操作系统安全

文章目录 Windows 10 操作系统安全1、Windows 10 系统安装的安全2、系统帐户安全3、应用安全策略4、网络安全策略 Windows 10 操作系统安全 1、Windows 10 系统安装的安全 操作系统的安全和安装操作系统的选项密切相关。 选择 NTFS 文件格式分区组件的定制安装 Windows 10 …

机器学习预测汽车油耗效率 MPG

流程 数据获取导入需要的包引入文件,查看内容划分训练集和测试集调用模型查看准确率 数据获取 链接&#xff1a;https://pan.baidu.com/s/1KeIJykbcVpsfEk0xjhiICA?pwd30oe 提取码&#xff1a;30oe --来自百度网盘超级会员V1的分享导入需要的包 import pandas as pd imp…

《设计模式之美》第二章 总结

《设计模式之美》总结 第二章 面向对象编程范式 2.1 当我们在谈论面向对象时&#xff0c;我们在谈什么 2.1.1 面向对象编程和面向对象编程语言 面向对象编程语言&#xff1a; 1. 以类或对象作为组织代码的基本单元&#xff0c;并将封装、继承、抽象、多态4个特性作为代码的…

逆向修改app就可以游戏充值到账?

hello ,大家好, 现在市场仍然流行着非常多的传奇类游戏私服或者其他类型的游戏私服,随着私服越来越多(很多并不合法),越来越多的人加入了破解,逆向修改,或者代充的队伍并从中获利。这里我给大家分享一下这些做代充的常规的做法,以及大家作为游戏服务器如何避坑做强校验…