思路:
1.将n/2作为第一增量,然后将所有距离为n/2的元素分在同一组,并对每一组的元素进行直接插入排序。然后再取一个比第一增量小的整数作为第二增量,重复上述操作...
2.当增量的大小减到1时,就相当于整个序列被分到一组,进行一次直接插入排序,排序完成。
对于增量的选定无一定论,但最后一个增量必须等于1,也就是说,每趟后一个增量是前一个增量的1/2。
代码:
- package lianxi;
- import java.util.*;
- public class Object01 {
- public static void main(String[] args) {
- /**
- * 希尔排序
- */
- Scanner scanner=new Scanner(System.in);
- System.out.println("请输入数组长度:");
- int n= scanner.nextInt();
- int[] arr=new int[n];
- System.out.println("输入数组元素:");
- for(int i=0;i
- arr[i]=scanner.nextInt();
- }
- while(n>0){
- n=n/2;
- for(int i=0;i
- for(int j=i;j
- if(arr[j]>arr[j+n]){
- int temp=arr[j];
- arr[j]=arr[j+n];
- arr[j+n]=temp;
- }
- }
- }
- }
- System.out.println(Arrays.toString(arr));
- }
- }
-
相关阅读:
数据结构—直接插入排序(C语言实现)
常用LaTeX命令
java switch 自定义表格的渲染和编辑示例
如何使用yum 安装php7.2
Redis高可用部署架构
使用LiveGBS GB28181平台监控视频录像回放如何在页面上嵌入录像时间轴
const和readonly的区别
AMBA总线协议之AHB学习记录(1)—ahb_bus(附verilog代码)
第一次写计算机论文无从下手怎么办?(一) - 易智编译easeediting
本地demo服务器搭建计划——(三)rabbitmq&配置中心config&配置自动刷新
-
原文地址:https://blog.csdn.net/m0_70264506/article/details/128069915
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU