首页 > 其他分享 >希尔排序(缩小增量排序)

希尔排序(缩小增量排序)

时间:2024-09-28 20:00:57浏览次数:8  
标签:int 希尔 key 增量 array 排序 inc

点击查看代码
package Sort;
import java.util.*;
public class 希尔排序增量 {
    public static void main(String[] args) {
        //三个循环控制
        int array[] = {2,9,8,6,10,12,7};
        int n = array.length;
        int inc;//增量
        int key;//中间变量
        int i,j;
        for(inc = n/2; inc > 0; inc/=2) {

            for( i = inc; i < n; i++) {//i=inc相当于i=1;
                for(j = i; j >=inc ; j-=inc) {//已排跟待排的间隔是inc;j是>=inc,而不是跟插入一样>0,确保j-inc存在。
                    if(array[j] < array[j-inc]) {
                        key = array[j];
                        array[j] = array[j-inc];
                        array[j-inc] = key;
                    }
                    else break;
                }
            }
            System.out.println(Arrays.toString(array));
        }
        System.out.println(Arrays.toString(array));
    }
}

[学习地址](https://www.bilibili.com/video/BV1BK4y1478X/?spm_id_from=333.788&vd_source=532792d0e39718742f8a2f1ac846ab04)

标签:int,希尔,key,增量,array,排序,inc
From: https://www.cnblogs.com/hutbluo/p/18438328

相关文章

  • 信息学奥赛复赛复习06-CSP-J2020-02直播获奖-向上取整、向下取整、整数除法、最大值、
    PDF文档公众号回复关键字:2024092812020CSP-J题目1优秀的拆分[题目描述]NOI2130即将举行。为了增加观赏性,CCF决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为w%,即当前排名前w%的选手的最低成绩就是即时的分数线更具体地,若当前已评出了p个......
  • 【题解】【归并排序】—— [NOIP2011 普及组] 瑞士轮
    【题解】【归并排序】——[NOIP2011普及组]瑞士轮[NOIP2011普及组]瑞士轮题目背景题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.思路解析2.AC代码[NOIP2011普及组]瑞士轮通往洛谷的传送门题目背景在双人对决的竞技性比赛,如乒乓球、羽毛球、......
  • Leetcode 154. 寻找旋转排序数组中的最小值 II
    1.题目基本信息1.1.题目描述已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,4,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,7,0,1,4]若旋转7次,则可以得到[0,1,4,4,5,6,7]注意,数组[a[0],a[1],a[2],......
  • 算法与数据结构——归并排序
    归并排序归并排序(mergesort)是一种基于分治策略的排序算法,包含下图所示的“划分”和“合并”阶段。划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。*合并阶段**:当子数组长度为1时终止划分,开始合并,持续地讲左右两个较短的有序数组合并为......
  • MATLAB排序
    在MATLAB中,可以使用sort函数对矩阵进行排序。以下是一些基本用法和示例,帮助你理解如何按特定维度对矩阵进行排序。1.基本用法1.1对向量排序A=[3,1,4,1,5,9];B=sort(A);%默认按升序排序结果为:B=1134591.2对矩阵排序对于矩阵......
  • redis有序集合多字段排序
    首先,redis有序集合本身是不支持多字段排序的例如ZADDusers25AliceZADDusers25BobZADDusers10Carol只能通过前面的分数这一个维度来实现,如果现在引入了另一个字段,可以在分数值(利用阿拉伯数字)上做手脚例如,时间维度2023-01-012023-01-022023-01-03这......
  • 揭秘合并排序:分治排序初学者指南
    归并排序由约翰·冯·诺依曼于1945年提出,主要是为了提高大型数据集的排序效率。冯·诺依曼的算法旨在使用分而治之的方法提供一致且可预测的排序过程。这种策略允许归并排序有效地处理小型和大型数据集,保证在所有情况下都能实现稳定的排序,时间复杂度为o(nlogn)。合并排序采用......
  • 【算法】贪心+堆排序实现大根堆及标准库容器类的融合使用
    ......
  • 算法与数据结构——快速排序
    快速排序快速排序(quicksort)是一种基于分治策略的排序算法,运行高效,应用广泛。快速排序的核心操作是“哨兵划分”,其目标是::选择数组中的某个元素作为“基准数”,将所有小于基准数的元素移到其左侧,而大于基准数的元素移到其右侧。具体流程如下:选取数组最左端元素作为基准数,初始化......
  • 算法与数据结构——简单排序算法(选择、冒泡、插入)
    简单排序算法时间复杂度均为O(n2)选择排序选择排序(selectionsort)的工作原理非常简单:开启一个循环,每轮从未排序区间选择最小的元素,将其放到已排序的区间的末尾。算法流程设数组长度为n,选择排序的算法流程如下。初识状态下,所有元素未排序,即未排序(索引)区间为[1,n-1]。选取......