排序算法大总结
简单的排序:*
选择排序
插入排序
冒泡排序
时间复杂度
O(N2)O(N^2)
O(N2)
空间复杂度:
O(1)O(1)
O(1)
经典的排序:
时间复杂度
O(N∗log(N))O(N*log(N))
O(N∗log(N))
快排:
无稳定性(指是否能保留原来的顺序)
快排空间复杂度:
O(logN)O(logN)
O(logN)
堆排:
无稳定性
堆排空间复杂度:
O(1)O(1)
O(1)
归并排序:
有稳定性
归并排序空间复杂度:
O(N)O(N)
O(N)
其它 根据实际条件限制的排序算法:
桶排
基数排序
时间复杂度
O(N)O(N)
O(N)
推荐书籍
记录一下一些我看完的书籍,以后有空的话可能会写写推荐语什么的♪(´▽`)嘿嘿
排名不分先后,后面是推荐指数:
历史:
《全球通史》(推荐指数★★★★★⚝,个人觉得上册比较好看 )
《人类的故事》(推荐指数★★★★★⚝,书不是很枯燥,值得一看 )
《红星照耀中国》(推荐指数★★★★⚝⚝)
《人类简史》(太久之前看的,不太记得了ψ(._. )>暂时:★★★★⚝⚝)
经济,政治,心理:
《乌合之众》(推荐指数★★★★★⚝)
《娱乐至死》(推荐指数★★★★★⚝)
《极简主义》(推荐指数★★★⚝⚝⚝)
《工作,消费主义和新穷人》(推荐指数★★★★★⚝)
文学:
《1984》(值得细细回味,另外,他的一个短篇小说《动物庄园》)(推荐指数★★★★★★)
《局外人》(推荐指数★★★★★⚝)
《老人与海》(推荐指数★★★★★★)
《野性的呼唤》(推荐指数★★★★★★)
《牧羊少年奇幻之旅》(推荐指数★★★★★★,“马克图布” )
《钢铁是怎样炼成的》(推荐指数★★★★★★)
《一个人的朝圣》(推荐指数★★★★★★)
《苏菲的世界》(推荐指数★★★★★⚝)
《西游记》《水浒传》(推荐指数★★★★★★ ...
堆排
一个比较经典的的排序算法
堆排的由来
堆排序(英语:Heapsort)是指利用二叉堆这种数据结构所设计的一种排序算法。由罗伯特·弗洛伊德发明。
罗伯特·弗洛伊德:
计算机科学家,图灵奖得主,前后断言法的创始人,堆排序算法和Floyd-Warshall算法的创始人之一。[1]
基本原理
堆(特指大根堆)是一种特殊的二叉树,在堆的数据结构中,堆中的最大值总是位于根节点。
堆排就是用数组存储堆的结构(层序遍历)并进行排序
如果初始索引是0 那么可以看出一个节点的左孩子索引
2∗N+12*N+1
2∗N+1
右孩子索引 为 左孩子索引 +1
父节点索引
[(index−1)/2][(index - 1) / 2]
[(index−1)/2]
然后对数组进行如下过程定义:
heapinsert:向堆中插入数据,并保持堆的特性
heapify:移除堆顶元素(即最大值),再重新组织堆的特性
代码实现
heapinsert:向堆中插入数据,并保持堆的特性
因为前面的数组 已经调整好了,当我们插入尾部后只要比父节点大就往上移,同时与父节点的交换并不会影响下面的子节点的堆特性(因为父节点相对于 ...
快速排序
一个比较经典的的排序算法
快速排序的由来
快速排序(英语:Quicksort),又称分区交换排序(英语:partition-exchange sort),简称「快排」
英国计算机科学家Tony Hoare在1960年为了解决计算机上的排序问题,提出了快速排序的算法,最初是为了在英国的英尔兰电子公司(ELLIOTT Brothers)的快速硬件上实现高效的排序算法。[1]
基本原理
快速排序的工作原理是通过递归中的分治思想的方式来将一个数组排序。
从待排序的数组中选择一个元素,称之为枢纽元(pivot)。
将数组中小于枢纽元的元素移到枢纽元的左边,将大于枢纽元的元素移到枢纽元的右边,这个过程称为分区(partition)。
递归地对枢纽元左边的子数组和右边的子数组进行排序。
当所有子数组都有序时,整个数组就自然有序了。
代码实现
整个流程最重要的就是partition过程了:
从待排序的数组中选择一个元素当作基准;
左右分别设置一个指针(也就是小于和大于那个基准的范围);
再建立一个当前指针进行遍历:
当大于基准时:当前位置与左边界的前一个交换,左边界右移加一,当前指 ...
本地与云端不一致
前面碰到过地测试正常但是上传后的页面错误
解决方法:
1234hexo cleanhexo deploy前者清除站点文件,后者重新生成并将之推送到指定的库分支。
**建议每次更新都需要hexo clean **
当然游览器缓存也可能是一个问题,不过过一会就会正常。
创建特殊文档
创建分类总览页代码:
1hexo new page categories
创建标签总览页代码:
1hexo new page tags
创建About总览页代码:
1hexo new page about
注:
网址路径结尾是“/”的话 会自动加载对应目录的index.html
1也就是 http://localhost:4000/tags/ 加载的是tags目录下的index.html 而不是tags.html
上面前两个文档文件需要手动生成,但里面的内容会自动生成 。
博客config配置
初始配置文件(config那个没有别的后缀)
1234567891011# Sitetitle: # 网站显示的标题 随意填author: # 你的名字 随意填language: zh-CN# Deployment## Docs: https://hexo.io/docs/one-command-deploymentdeploy: type: git repository: git@github.com:username/username.github.io.git # 要是GitHub改名了,记得这里改一下 branch: main # 仓库名称
主题配置文件常见配置(我所有是butterflyx主题):
12345678910111213141516171819202122232425262728293031323334353637# Avatar (头像设置)avatar: img: # url effect: false# Favicon(网站的图标)favicon: /img/myFavicon.pngcover: # display the cover or ...
打印汉诺塔过程
用代码实现 打印汉诺塔最优解的过程
废话少说咱们直接开始(‾◡◝)
首先先来看看汉诺塔问题的定义:
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。[1]
那我们简化一下问题:变成三个圆盘,毕竟我们也买不起这么多黄金圆盘
(才不是我懒~( ̄▽ ̄)~*)
如图我们要移动三个圆盘到最边上,而且小圆盘上不能放大圆盘
那我们分析要让所用圆盘移到右边,很显然根据规则可以知道最下面的圆盘肯定要先移到最右边,不然移动别的大的就放不下了;
同时也可以看出:
要让最下面的圆盘移到最右边,就要让它上面的圆盘移到中间(就像把大象塞进冰箱要怎么办的问题一样)
顺着思路也就可以分析它上面的圆盘移到中间的问题,如果把中间的杆子当成右边的(即目标杆),那问题就变成两层的汉诺塔问题了(底层的那个金盘你会发现有没有都无所谓),那就很显然是一个递归问题了,下 ...
学成在线项目介绍
学成在线
介绍
本项目基于黑马程序员的 《学成在线》 项目搭建 仅供学习参考
在线教育行业是一个有着极强的广度和深度的行业,从校内到校外;从早幼教到职业培训;从教育工具到全信息化平台等等。
学成在线项目是本公司自研的一个专门针对成人职业技能教育的网络课堂系统,网站提供了成人职业技能培训的相关课程,如:软件开发培训、职业资格证书培训、成人学历教育培训等课程。项目基于B2B2C的业务模式,培训机构可以在平台入驻、发布课程,运营人员对发布的课程进行审核,审核通过后课程才可以发布成功,课程包括免费和收费两种形式,对于免费课程可以直接选课学习,对于收费课程在选课后需要支付成功才可以继续学习。
软件架构
本项目包括了用户端、机构端、运营端。
核心模块包括:内容管理、媒资管理、课程搜索、订单支付、选课管理、认证授权等。
下图是项目的功能模块图:
本项目采用前后端分离架构,后端采用SpringBoot、SpringCloud技术栈开发,数据库使用了MySQL,还使用的Redis、消息队列、分布式文件系统、Elasticsearch等中间件系统。
划分的微服务包括:内容管理服务、媒资管理服务、搜索服 ...
文档上的注释
Front-matter 采用 YAML 格式
源码:
12345678910---title: # 标题date: # 日期tags: # 标签- categories: # 分类-cover: /img/***.jpg # 封面 相对路径或者使用网址indexing: false # 生成的搜素(此功能需要手动开启)结果将不包含此帖子或页面---
可以参考官方文档
注意事项:
title 不建议写中文或者网站采用hash算法(避免网址中文乱码)
采用hash算法设置(主路径下的_config配置中的下面位置):
12345678910# URL## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'url: https://***.github.io# 改这里 原先是 :year/:month/:day/:title/ -> :year/:month/:day/:hash/permalin ...

