八大排序--04希尔排序(缩小增量排序)

假设数组 arr[]= {0,3,1,2,5,7,4,6},请通过插入排序的方式,实现从小到大排列:

方法:将数组按照数组长度的一半为间隔进行分组,组内进行插入排序,小的数据在前面,大的数据在后面;

将数据按照数组长度一半的一半为间隔进行分组,组内进行插入排序;

重复上述步骤,直到无法继续分组(步长为1时),整个数组视为一组,组内进行插入排序,此刻只需要进行微调就可以得到最终结果。

完整代码:

java 复制代码
package Java.start;

import java.util.Arrays;

public class ShellSort {
//希尔排序
	public static void main(String[] args) {
		int[] arr= {0,3,1,2,5,7,4,6};
		sort(arr);
		System.out.println(Arrays.toString(arr));
	}
	
	public static void sort(int[] arr) {
		//设置步长
		for(int grp=arr.length/2;grp>=1;grp=grp/2) {
			for(int i=grp;i<arr.length;i++) {
				//arr[j] arr[j+grp]进行比较
				for(int j=i-grp;j>=0;j=j-grp) {
					if(arr[j]>arr[j+grp]) {
						int temp=arr[j];
						arr[j]=arr[j+grp];
						arr[j+grp]=temp;
					}else {
						break;
					}
				}
			}
		}
		
		
		
		
		
		
		
		
	}
	
	
	
	
}

结果:

相关推荐
IAUTOMOBILE6 分钟前
Python 流程控制与函数定义:从调试现场到工程实践
java·前端·python
hutengyi6 分钟前
PostgreSQL版本选择
java
皮皮林55112 分钟前
重磅!JetBrains 正式发布全新的 AI 开发工具,定名 AI IDE AIR
java·intellij idea
MX_935925 分钟前
SpringMVC请求参数
java·后端·spring·servlet·apache
ID_1800790547331 分钟前
小红书笔记评论 API,Python 调用示例与完整 JSON 返回参考
java·开发语言
Fuxiao___34 分钟前
C 语言核心知识点讲义(循环 + 函数篇)
算法·c#
lifewange35 分钟前
java连接Mysql数据库
java·数据库·mysql
漫随流水1 小时前
c++编程:反转字符串(leetcode344)
数据结构·c++·算法
云原生指北1 小时前
命令行四件套:fd-rg-fzf-bat
java·大数据·elasticsearch
人间打气筒(Ada)2 小时前
go实战案例:如何通过 Service Meh 实现熔断和限流
java·开发语言·golang·web·istio·service mesh·熔断限流