代码重构 【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,8 +1,8 @@
> 如果阅读时发现错误或者动画不可以显示的问题可以添加我微信好友 **[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>进入。
### **简单选择排序**
@@ -10,8 +10,6 @@
![](https://cdn.jsdelivr.net/gh/tan45du/github.io.phonto2@master/myphoto/微信截图_20210120150816.4za4u7331sw0.png)
例如上图绿色代表已经排序的元素红色代表未排序的元素我们当前指针指向 4 则我们遍历红色元素从中找到最小值然后与 4 交换我们发现选择排序执行完一次循环也至少可以将 1 个元素归位
下面我们来看一下代码的执行过程看过之后肯定能写出代码的
@@ -33,10 +31,10 @@ class Solution {
for (int i = 0; i < len; ++i) {
min = i;
//遍历到最小值
for (int j = i + 1; j < len; ++j) {
if (nums[min] > nums[j]) min = j;
for (int j = i + 1; j < len; ++j) {
if (nums[min] > nums[j]) min = j;
}
if (min != i) swap(nums,i,min);
if (min != i) swap(nums,i,min);
}
return nums;
}
@@ -72,10 +70,9 @@ class Solution:
nums[j] = temp
```
**简单选择排序时间复杂度分析**
从简单选择排序的过程来看他最大的特点就是交换移动数据次数相当少这样也就节省了排序时间简单选择和冒泡排序不一样我们发现无论最好情况和最坏情况元素间的比较次数是一样的 i 次排序需要 n - i 次比较,n 代表数组长度则一共需要比较(n-1) + (n-2) +.... + 2 + 1= n*(n-1)/2 对于交换而言最好情况交换 0 最坏情况(逆序时)交换 n - 1次那么简单选择排序时间复杂度也为 O(n^2) 但是其交换次数远小于冒泡排序所以其效率是好于冒泡排序的
从简单选择排序的过程来看他最大的特点就是交换移动数据次数相当少这样也就节省了排序时间简单选择和冒泡排序不一样我们发现无论最好情况和最坏情况元素间的比较次数是一样的 i 次排序需要 n - i 次比较,n 代表数组长度则一共需要比较(n-1) + (n-2) +.... + 2 + 1= n\*(n-1)/2 对于交换而言最好情况交换 0 最坏情况(逆序时)交换 n - 1 那么简单选择排序时间复杂度也为 O(n^2) 但是其交换次数远小于冒泡排序所以其效率是好于冒泡排序的
**简单选择排序空间复杂度分析**
@@ -89,9 +86,6 @@ class Solution:
此时我们需要从后面元素中找到最小的元素与指针指向元素交换也就是元素 2 但是我们交换后发现两个相等元素 3 的相对位置发生了改变所以简单选择排序是不稳定的排序算法
| 算法名称 | 最好时间复杂度 | 最坏时间复杂度 | 平均时间复杂度 | 空间复杂度 | 是否稳定 |
| ------------ | -------------- | -------------- | -------------- | ---------- | -------- |
| 简单选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 不稳定 |