思路:
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));
- }
- }
-
相关阅读:
【小5聊】sql server 分页和分组-row_number()和over()、rank()和over()的小区别
信息系统项目管理师(第四版)教材精读思维导图-第十三章项目资源管理
sqlServer 检测慢 sql
AUTOSAR汽车电子嵌入式编程精讲300篇-基于 CAN 总线的车辆数据采集与远程监控系统研发(中)
浏览器缓存机制
JVM内存模型介绍
OKR 及其对员工的重要性
微信小程序开发(二)
【问题定位】通过看Mybatis源码解决系统问题
Scala系列-4、scala中特质、柯里化、闭包等
-
原文地址:https://blog.csdn.net/m0_70264506/article/details/128069915