思路:
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));
- }
- }
-
相关阅读:
PVIT:利用位置信息增强多模态模型理解用户意图的能力
Blazor 使用拖放(drag and drop)上传文件 , 粘贴文件上传
网络编程1
河北画报杂志河北画报杂志社河北画报编辑部2022年第20期目录
Java 多线程 先批量执行1号任务和部分2号任务,等待1号全部任务完成后,再执行剩下的2号任务内容 - CountDownLatch
微信小程序快速入门【四】
基于SpringBoot的社团管理系统
Java语言基础(上)
【英语:语法基础】C4.日常对话-餐饮专题
李沐深度学习记录4:12.权重衰减/L2正则化
-
原文地址:https://blog.csdn.net/m0_70264506/article/details/128069915