摘要:
代码: 这个算法更简单了,记住三个字:打擂台。 时间复杂度O(n ** 2) 空间复杂度O(1) 不稳定算法。 记住四个稳定排序算法:直接插入排序、冒泡排序、二路归并排序、基数排序。剩下都是不稳定的。 阅读全文
摘要:
代码: 怎么少了一种?先写这些,以后再修改一下。 阅读全文
摘要:
代码: 二路归并,没有什么难以理解的,要注意递归的写法。还有返回值的问题。 时间复杂度:O(nlogn) 空间复杂读:O(nlogn) 跟堆排序、快速排序一样。 但它是稳定排序算法 阅读全文
摘要:
代码 堆排序真的是排序算法中我花费时间最多的算法了,最开始是理解原理上出了问题。理解了之后写代码又出了问题。 对于二叉树不是很熟的最好复习一下树的知识。 理解了之后就能很好的写代码了。 思路: 1.从len(L)/2 到1开始,建立大根堆。这里需要注意的是:这里的元素并不是一次就能移动到最终的位置的 阅读全文
摘要:
代码: 算法理解上没有什么问题,问题在算法实现上。特别注意的是几个索引,low 和 high 做一下缓存。 另外,在用递归的时候,一定注意迭代停止的判断条件。我在写代码的时候就一直忘了加判断条件,结果总是提示错误。一个简单的错误就搞这么久。 时间复杂度:O(nlogn) 空间复杂读:O(nlogn) 阅读全文
摘要:
代码: 冒泡排序应该是最熟悉的排序算法了吧,所以基本上写这个算法没遇到什么问题。值得注意的是,python中交换两个数的顺序可以通过这种方式实现,这种小tip可以学习一下。 时间复杂度O(n ** 2) 空间复杂读O (1) 稳定排序算法。 说明:稳定排序大概有四种:直接选择排序、冒泡排序、归并排序 阅读全文
摘要:
刚参考网上的以及书上的资料把这八大算法又复习了一遍,感悟就是:有些算法原理真的很简单,一看就懂,但实现起来总是有这样那样的问题。 闲言少叙,先贴代码,之后再以自己的理解,以及自己在理解与实现的过程中遇到的坑,以自己的话记录下来。为了以后复习的方便,也可能给遇到同样坑的人提供些许的思路! 思路:直接插 阅读全文