首页 > 其他分享 >希尔排序

希尔排序

时间:2022-09-24 10:56:26浏览次数:49  
标签:插入排序 每组 希尔 算法 增量 排序

  • 插入排序存在的问题
数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是:
{2,3,4,5,6,6}
{2,3,4,5,5,6}
{2,3,4,4,5,6}
{2,3,3,4,5,6}
{2,2,3,4,5,6}
{1,2,3,4,5,6}

结论: 当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响
  • 希尔排序
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。

# 基本思想
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止

标签:插入排序,每组,希尔,算法,增量,排序
From: https://www.cnblogs.com/chniny/p/16725126.html

相关文章

  • go-冒泡排序-练习
    packagemainimport"fmt"funcmain(){ nums:=[]int{1,5,4,3,2,9,8,7,6,0}/* //第一轮 fori:=0;i<len(nums)-1;i++{ ifnums[i]>nums[i+1]{ nums[i],nums......
  • go中使用map的键排序
    packagemainimport("fmt""sort")funcmain(){//待排序队列varstuScore=map[int]string{1:"ee",5:"cc",4:"ff",9:"qq",3:"aa",2:"bb"}fmt.Println(stu......
  • 插入排序
    简介插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的插入排序(InsertionSorting)的基本思想是:把n个待排序的元素看成为......
  • go中使用map的值排序
    packagemainimport( "fmt" "sort")funcmain(){ //待排序队列 varstuScore=map[string]int{"ee":20,"cc":90,"ff":70,"qq":40,"aa":79,"bb":30} //创建......
  • 选择排序
    简介选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的代码实现publicclassSelectSort{ publicsta......
  • P1347 排序 题解
    题干交了8次,下载了3个测点.....首先这个题,很容易想到用拓扑如果有“X$<$Y”,就建立一条从X到Y的有向边要考虑到,如果排序成立,必须满足入度为0的点只有一个并且出度为0的......
  • java基础-冒泡排序以及稀疏数组
     java基础 以下内容为本人的学习笔记,如需要转载,请声明原文链接   https://www.cnblogs.com/lyh1024/p/16720908.html Ø 冒泡排序原理:比较数组中,两个相邻的元......
  • 冒泡排序
    简介代码实现publicclassBubbleSort{ publicstaticvoidmain(String[]args){ intarr[]={3,9,-1,10,20};//第1趟 inttemp......
  • 拖拽排序
    <!doctypehtml><html><head><metacharset="UTF-8"><title>拖拽排序</title><style>ul{list-style:none;margi......
  • 归并排序
    平均时间复杂度:O(nlogn)最佳时间复杂度:O(n)最差时间复杂度:O(nlogn)空间复杂度:O(n)排序方式:In-place稳定性:稳定defmerge_sort(num1,num2):#按大小合并数组......