首页 > 其他分享 >数据结构-希尔排序

数据结构-希尔排序

时间:2023-08-21 11:31:53浏览次数:47  
标签:排序 DataCrol int insertionSort 希尔 array 数据结构 public ShellSort


java实现希尔排序算法

源代码

public class ShellSort extends DataCrol {
    @Override
    public void sort(int[] array) {
        int h = 0;
        int size = array.length;
        while (h <= size) {// 生成初始增量
            h = 3 * h + 1;
        }
//        h = size / 2;
        while (h > 0) {
            for (int i = h; i < size; i++) {
                int j = i - h;
                int get = array[i];
                while (j >= 0 && array[j] > get) {
                    array[j + h] = array[j];
                    j = j - h;
                }
                array[j + h] = get;
            }
            h = (h - 1) / 3;// 递减增量
//            h /= 2;
        }
    }

    public static void main(String[] args) {
        ShellSort insertionSort = new ShellSort();
        int[] array = DataCrol.createRandomArray(20);
        DataCrol.print(array);
        insertionSort.sort(array);
        DataCrol.print(array);
        insertionSort.timeTest(10000000);
    }
}


标签:排序,DataCrol,int,insertionSort,希尔,array,数据结构,public,ShellSort
From: https://blog.51cto.com/u_10101161/7173109

相关文章

  • 数据结构-归并排序
    java实现归并排序算法源代码publicclassMergeSortextendsDataCrol{//合并两个已排好序的数组A[left...mid]和A[mid+1...right]voidmerge(intA[],intleft,intmid,intright){intlen=right-left+1;int[]temp=newint[len];//辅......
  • 数据结构与算法八股
    讲一讲插入排序讲一讲冒泡排序讲一讲快速排序讲一讲堆排序讲一讲归并排序 dpdp数组的定义及含义:dp[num1.length+1][num2.length+1],为什么要+1呢,因为我们要判断他与前面的关系涉及到i-1,所以遍历需要从1开始return的是什么如果初始化时候size+1了,那么最后一个下标就是size......
  • 【数据结构】排序 归并排序和基数排序
    1.归并排序归并排序中的"归并"的意义就是把多个有序表合并为一个新的有序表。算法思想:二路归并排序:初始情况下将长度为n的待排序表分为n个子表,则每个子表的长度为1,是有序的。每趟排序尽量将这些子表按位置相邻两两归并,重复直到合并为一个长度为n的有序表为止。具体实现:在归......
  • 选择排序
    排序#include<iostream>#include<algorithm>usingnamespacestd;inta[10010];intmain(){ intn; cin>>n; for(inti=1;i<=n;i++) { cin>>a[i]; } //使用选择排序进行排序 for(inti=1;i<=n;++i) { for(int......
  • sqlite 实现分页排序
    版本号MacOSAppleM1|Jdk17|Maven3.8.5|SpringBoot2.6.9|内嵌式Sqlite3.42.0.0Pageable使用方式findAll()importorg.springframework.data.domain.Page;importorg.springframework.data.domain.PageRequest;importorg.springframework.data.domain.Pageabl......
  • 「学习笔记」归并排序
    关于归并排序,百度百科是这样定义的:归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路......
  • 将三个组排序
    给定数组只含1、2、3三种数每次操作可以将一个数进行修改将数组修改成非递减顺序的最少次数1.暴力(笨比做法)枚举三种类型数分割的界限classSolution{public:intminimumOperations(vector<int>&nums){intres=INT_MAX;intn=nums.size();......
  • 考研数据结构——每日一题[希尔排序]
    shell_sort希尔排序//每组内的下标是等差数列//c++中的sort是快排+插排【当排序到<28时改为插入排序】voidshell_sort()//希尔排序【分组的插入排序】不稳定(间隔d的分为一组){for(intd=n/3;d;d=d==2?1:d/3)//特判2,等于2就用1,(最后要用1,而2时d/3=......
  • 数据结构学习记录(一)
    堆栈与队列一、知识要点1、堆栈堆栈的定义堆栈(Stack)是一种具有一定约束的线性表,插入和删除操作都作用在一个称为栈顶(Top)的端点位置。通常把数据插入称为压入栈(Push),删除数据称为弹出栈(Pop)。在堆栈中,最后入栈的数据被最先弹出,所以堆栈也被称为后入先出。堆栈的抽象数据......
  • COMP3506/7505 算法与数据结构
    AssignmentOne–15%AlgorithmsandDataStructures–COMP3506/7505–Semester2,2023Due:3pmonFridaySeptember1st(week6)SummaryThemainobjectiveofthisassignmentistogetyourhandsdirtywithsomesimpledatastructuresandalgorithmstosolveb......