/**希尔排序的原理:根据需求,如果你想要结果从大到小排列,它会首先将数组进行分组,然后将较大值移到前面,较小值
* 移到后面,最后将整个数组进行插入排序,这样比起一开始就用插入排序减少了数据交换和移动的次数,可以说希尔排序是加强
* 版的插入排序
* 拿数组5, 2, 8, 9, 1, 3,4来说,数组长度为7,当increment为3时,数组分为两个序列
* 5,2,8和9,1,3,4,第一次排序,9和5比较,1和2比较,3和8比较,4和比其下标值小increment的数组值相比较
* 此例子是按照从大到小排列,所以大的会排在前面,第一次排序后数组为9, 2, 8, 5, 1, 3,4
* 第一次后increment的值变为3/2=1,此时对数组进行插入排序,
*/
public class ShellSort {
public static void shellSort(int[] data) {
int j = 0;
int temp = 0;
for (int increment = data.length / 2; increment > 0; increment /= 2) {
for (int i = increment; i < data.length; i++) {
temp = data[i];
for (j = i; j >= increment; j -= increment) {
if(temp > data[j - increment]){
data[j] = data[j - increment];
}else{
break;
}
}
data[j] = temp;
}
}
}
public static void main(String[] args) {
int[] data = new int[] { 5, 2, 8, 9, 1, 3 ,4};
System.out.println("未排序前");
for (int i = 0; i < data.length; i++){
System.out.print(data[i] + " ");
}
shellSort(data);
System.out.println("\n排序后");
for (int i = 0; i < data.length; i++)
System.out.print(data[i] + " ");
}
}
相关推荐
别再只调包了!深入理解机器学习虚拟筛选中的分子指纹(ECFP/Morgan)
本文深入探讨了ECFP/Morgan分子指纹在机器学习虚拟筛选中的应用与优化策略。通过解析半径参数与比特长度的化学意义,揭示了如何通过参数调优提升模型性能20%以上,特别适用于药物发现领域的高通量筛选。文章还提供了工程实践中的参数优化策略和多指纹融合技术,为开发者提供从理论到实践的全面指导。
java希尔排序
在上一篇 C++、C#、java算法学习日记05 中由于电脑出了点问题java启动不了,这一篇我补上: 希尔排序java实例: package Sort; import java.util.*; public class Sort5 { public void ShellSort(List array){ int Length=array.size();//获取长度
SIGIR 2026:信息检索前沿技术与投稿指南
信息检索(Information Retrieval, IR)是计算机科学中处理大规模数据检索的核心技术,其基本原理是通过算法模型从海量数据中高效提取相关信息。随着深度学习的发展,神经信息检索(Neural IR)和多模态检索成为研究热点,如稠密检索模型(DPR)和跨模态预训练(CLIP)等技术的应用显著提升了检索精度。这些技术不仅在学术领域具有重要价值,还在电商搜索、医疗检索等实际场景中展现出巨大潜力。SIGIR作为信息检索领域的顶级会议,汇聚了全球顶尖学者和工业界专家,是展示最新研究成果的重要平台。本文
java 希尔排序
java希尔排序
LTspice导入德州仪器SPICE模型的实用指南与常见问题解析
本文详细介绍了如何在LTspice中导入德州仪器的SPICE模型,包括模型文件获取、路径管理、导入步骤及常见问题解析。通过实用指南帮助工程师精确仿真电路性能,提升设计效率,重点涵盖了第三方模型的导入教程和最佳实践。
LangChain入门(二)-通过 Google 搜索并返回答案
并复制他给我们生成 api key。(博主使用了GitHub账号登录)-邮箱验证-手机号验证-订阅-api-key。Serpapi 提供了 google 搜索的 api 接口。首先需要我们到 Serpapi 官网上注册一个用户,
Java之希尔排序
希尔排序推导过程: public static void shellSort(int[] arr) { int temp = 0; //希尔排序的第1轮排序 //因为第1轮排序,是将10个数据分成了5组 for (int i = 5; i < arr.length; i++) { //遍历各组中所有的元素(共5组,每组有2个元素),步长5 for (int j = i - 5; j >
Windows 11安装 SQLServer 2008 R2 失败问题处理
Windows 11安装SQL Server 2008 R2失败解决方案 由于Windows 11移除了对PowerShell 2.0的支持,导致SQL Server 2008 R2安装失败。经过多次尝试,最终通过**方案六(修改注册表模拟PowerShell 2.0环境)**成功安装。其他可行方案包括: 使用SP3集成版安装包 通过命令行跳过检查(/SUPPRESSPOWERShellCHECK参数) 创建特殊配置文件 替代方案建议: 使用Docker容器运行 在虚拟机中安装 升级到新版SQL Serve
java希尔排序的实例,2个java希尔排序示例
java希尔排序希尔排序是插入排序的一种类型,也可以用一个形象的叫法缩小增量法。基本思想就是把一个数组分为好几个数组,有点像分治法,不过这里的划分是用一个常量d来控制。这个0位置移动到第一个,这样就会浪费很大,使用这个改进的希尔排序可以实现数据元素的大跨度的移动。也就是这个算法的优越之处。package cn.cqu.coce.xutao;public class shell3 {public s...
常见信号逻辑电平标准介绍:TTL、CMOS、ECL、LVDS、CML
逻辑电平是指数字信号电压的高、低电平,相关参数定义如下:(1)输入高电平门限Vih:保证逻辑门的输入为高电平时所允许的最小输入高电平,当输入电平高于Vih时,则认为输入电平为高电平;(2)输入低电平门限Vil:保证逻辑门的输入为低电平时所允许的最大输入低电平,当输入电平低于Vil时,则认为输入电平为低电平;(3)输出高电平门限Voh:保证逻辑门的输出为高电平时的输出电平的最小值,逻辑门的输出为高电平时的电平值都必须大于此Voh;
Sparse4Dv3 代码复现
打包数据集的元信息和标签,并生成所需的.pkl文件。最后还输出了很多跟踪相关的东西...然后通过K-means生成锚点。编译可变形聚合CUDA算子。安装motmetrics。
java希尔排序_Java实现希尔排序
希尔排序(Shell Sort)是插入排序的一种,是针对直接插入排序算法的改进,是将整个无序列分割成若干小的子序列分别进行插入排序,希尔排序并不稳定。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。一、基本思想先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2二、下面让...
关于红队方面的学习资料
关于红队方面的学习资料
java代码实现希尔排序_Java希尔排序算法代码实现
Java希尔排序算法代码实现时间:2017-08-30来源:华清远见JAVA学院什么是Java希尔排序算法呢?希尔排序算法实际上是一种分组插入的排序算法,又被称为缩小增量排序。今天华清Java学院小编就来和大家分享下Java希尔排序算法代码实现。Java希尔排序算法是的基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组...
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
java希尔排序(含希尔排序代码)
希尔排序原理 希尔排序为啥比插入排序效率高 希尔排序的代码详解
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
希尔排序(Java)
希尔排序(Shell Sort)是一种插入排序的改进算法,它通过比较距离较远的元素交换位置,从而实现数据局部的较小规模排序,逐渐减小元素之间的间隔,最终完成整个序列的排序。希尔排序的主要思想是通过预排序的子序列最终达到整体有序。
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
Java实现希尔排序图解
目录简单插入排序存在的问题希尔排序法介绍希尔排序法基本思想排序思想图解代码实现 简单插入排序存在的问题 假如数组arr={2,3,4,5,6,1},这时需要插入的数为1,这样的过程是 {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5,6} {1,2,3,4,5,6} 结论:当需要排序的数为倒序,而我们需要正序排序的时候,效率很低。 希尔排序法介绍 希尔排序是希尔(DonaldShell)于1959年提出的一种排
Java希尔排序
使用 Java 实现希尔排序
java 数组 希尔排序_java希尔排序
java希尔排序1、基本思想:希尔排序也成为“缩小增量排序”,其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序列“基本有序”后,最后在对所有元素进行一次直接插入排序。因此,我们要采用跳跃分割的策略:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到的结果是基本有序而不是局部有...
java实现希尔排序算法
希尔排序 1、算法思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素进行比较,移动,插入,比如[5,4,3,2,1,0]这种倒序序列,数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。而希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按
Java实现希尔排序
希尔排序 private static void ShellSort(int[] arr) { int length = arr.length; int aug = length / 2; while (aug > 0) { for (int i = aug; i < length; i++) { int temp = arr[i]; int j = i - a
利用Java进行希尔排序
利用Java进行希尔排序(元素中有0会有问题),步长经过调试length/2+1最合适。 import java.util.Scanner; public class HierSort { private static int array[] = new int[100000]; private static void setArray(int length){ ...
java希尔排序的实例,Java 插入排序之希尔排序的实例
Java 插入排序之希尔排序的实例Java代码/*希尔排序(Shell Sort)是插入排序的一种。其基本思想是:先取定一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1* 个组,所有距离为d1的倍数的记录放在同一个组中,在各个组中进行插入排序;然后,取第二个增量d2* 直至所取的增量dt=1(dt* new int[]{8,5,1,7,9,4,6},开始分割集合的间隔长度为3的情况,[...
java希尔排序_java 希尔排序
思路希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。希尔排序是把记录按下表的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键...
Java打印希尔排序的每一趟_java排序算法之希尔排序
希尔排序是冲破二次时间屏障的第一批算法之一。它是通过比较相距一定间隔的元素来工作,各趟比较所用的距离随着算法的进行而减小,直到最后一趟(比较相邻元素)为止。因此希尔排序也叫缩减增量排序。希尔排序使用一个序列h1,h2,h3...hk来排序。具体的意思是第一趟排序比较的是相隔为hk的元素,也就是比较a[i]与a[i+hk],保证a[i]<=a[i+hk]。第二次比较的是相隔为hk-1的元素,也...
希尔排序java
基本思想:希尔排序的基本思想是:将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个表就只有一列了。将数组转换至表是为了更好地理解这算法,算法本身还是使用数组进行排序。 public class Shell { public static void sort(Comparable[] a) { int N=a.length; int h=1; while(h<N/3) h=3*h+1; while(h>=1.
829



被折叠的 条评论
为什么被折叠?



