代码重构 【Github Actions】

This commit is contained in:
github-actions[bot]
2021-07-23 15:44:19 +00:00
parent c79cac3d9c
commit f671c90754
94 changed files with 1609 additions and 2111 deletions

View File

@@ -1,12 +1,12 @@
> 如果阅读时发现错误或者动画不可以显示的问题可以添加我微信好友 **[tan45du_one](https://raw.githubusercontent.com/tan45du/tan45du.github.io/master/个人微信.15egrcgqd94w.jpg)** ,备注 github + 题目 + 问题 向我反馈
> 如果阅读时发现错误或者动画不可以显示的问题可以添加我微信好友 **[tan45du_one](https://raw.githubusercontent.com/tan45du/tan45du.github.io/master/个人微信.15egrcgqd94w.jpg)** ,备注 github + 题目 + 问题 向我反馈
>
> 感谢支持该仓库会一直维护希望对各位有一丢丢帮助
>
> 另外希望手机阅读的同学可以来我的 <u>[**公众号袁厨的算法小屋**](https://raw.githubusercontent.com/tan45du/test/master/微信图片_20210320152235.2pthdebvh1c0.png)</u> 两个平台同步,想要和题友一起刷题,互相监督的同学,可以在我的小屋点击<u>[**刷题小队**](https://raw.githubusercontent.com/tan45du/test/master/微信图片_20210320152235.2pthdebvh1c0.png)</u>进入。
> 另外希望手机阅读的同学可以来我的 <u>[**公众号袁厨的算法小屋**](https://raw.githubusercontent.com/tan45du/test/master/微信图片_20210320152235.2pthdebvh1c0.png)</u> 两个平台同步,想要和题友一起刷题,互相监督的同学,可以在我的小屋点击<u>[**刷题小队**](https://raw.githubusercontent.com/tan45du/test/master/微信图片_20210320152235.2pthdebvh1c0.png)</u>进入。
### **希尔排序 Shell's Sort**
我们在之前说过直接插入排序在记录基本有序的时候和元素较少时效率是很高的基本有序时只需执行少量的插入操作就可以完成整个记录的排序工作当元素较少时效率也很高就比如我们经常用的 Arrays.sort (),当元素个数少于47使用的排序算法就是直接插入排序那么直接希尔排序和直接插入排序有什么关系呢
我们在之前说过直接插入排序在记录基本有序的时候和元素较少时效率是很高的基本有序时只需执行少量的插入操作就可以完成整个记录的排序工作当元素较少时效率也很高就比如我们经常用的 Arrays.sort (),当元素个数少于 47 使用的排序算法就是直接插入排序那么直接希尔排序和直接插入排序有什么关系呢
希尔排序是**插入排序**的一种又称缩小增量排序Diminishing Increment Sort是直接插入排序的高级变形其思想简单点说就是有跨度的插入排序这个跨度会逐渐变小直到变为 1变为 1 时记录也就基本有序这时用到的也就是我们之前讲的直接插入排序了
@@ -87,7 +87,6 @@ class Solution:
return nums
```
我们刚才说我们的增量可以自己设置的我们上面的例子是用的希尔增量下面我们看这个例子看看使用希尔增量会出现什么问题
![](https://cdn.jsdelivr.net/gh/tan45du/bedphoto2@master/20210122/微信截图_20210127212901.62c3o3ss6pg0.png)
@@ -104,21 +103,21 @@ Sedgewick 增量序列如下:
通项公式 9*4^k - 9*2^
利用此种增量方式的希尔排序最坏时间复杂度是O(n^(4/3))
利用此种增量方式的希尔排序最坏时间复杂度是 O(n^(4/3))
Hibbard增量序列如下
Hibbard 增量序列如下
13715......
通项公式2 ^ k-1
通项公式 2 ^ k-1
利用此种增量方式的希尔排序最坏时间复杂度为O(n^(3/2))
利用此种增量方式的希尔排序最坏时间复杂度为 O(n^(3/2))
上面是两种比较具有代表性的增量方式可究竟应该选取怎样的增量才是最好目前还是一个数学难题不过我们需要注意的一点就是增量序列的最后一个增量值必须等于1才行
上面是两种比较具有代表性的增量方式可究竟应该选取怎样的增量才是最好目前还是一个数学难题不过我们需要注意的一点就是增量序列的最后一个增量值必须等于 1 才行
**希尔排序时间复杂度分析**
希尔排序的时间复杂度跟增量序列的选择有关范围为 O(n^(1.3-2)) 在此之前的排序算法时间复杂度基本都是O(n^2),希尔排序是突破这个时间复杂度的第一批算法之一
希尔排序的时间复杂度跟增量序列的选择有关范围为 O(n^(1.3-2)) 在此之前的排序算法时间复杂度基本都是 O(n^2),希尔排序是突破这个时间复杂度的第一批算法之一
**希尔排序空间复杂度分析**
@@ -133,4 +132,3 @@ Hibbard增量序列如下
通过上图可知如果我们选用 4 为跨度的话交换后两个相同元素 2 的相对位置会发生改变所以希尔排序是一个不稳定的排序
![](https://cdn.jsdelivr.net/gh/tan45du/bedphoto2@master/20210122/微信截图_20210128084911.6tmdmz51m2c0.png)