思路:
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));
- }
- }
-
相关阅读:
什么是VR虚拟现实|虚拟科技博物馆|VR设备购买
LAMMPS实操系列(三): 大量FCC-CoCrCuFeNi高熵合金建模与结构筛选
hive on spark下row_number()问题排查
与值域有关的问题(非权值线段树)——运用分块:1004T1
idea springboot 如何搭建多层子模块
如何加快发明专利的审查时间
【uni-app从入门到实战】组件和样式学习
设计模式概述
C#word(2007)操作类
springcloud环境搭建
-
原文地址:https://blog.csdn.net/m0_70264506/article/details/128069915