摘要:
(1)树的基本性质 1.树中的结点数等于所有结点的度数+1。 2.树中结点的最大度数称为树的度。 3.度为m的树中第i层上至多有mi-1个结点。 4.高度为h的m叉树至多有(mh-1)/(m-1)个结点。 5.具有n个结点的m叉树的最小高度math.ceil(logm[n(m-1)+1]) (2)二 阅读全文
摘要:
#首行输入数n,接下来输入n行数,以空格隔开 n = int(raw_input())# print nL = []for i in range(n): L.append([int(x) for x in raw_input().split(' ')])print L 阅读全文
摘要:
#coding:utf-8 #author:徐卜灵 ##################### #由于在各大公司笔试的时候总是会遇到一些格式化输入输出数据,今天就来总结一下。 #结合numpy来处理数据 ##################### ###1.第一行输入一个数n,之后输入n个数,以空格隔开 # n = int(raw_input()) # L = [int(x) for x in ... 阅读全文
摘要:
代码: 这个算法不难理解,但在写程序的时候还是遇到了小小的麻烦。主要体现在它的时间复杂读为O(n ** 1.3 )好奇怪的时间复杂度。 所以,在一次排序中,L[i]和L[i-step]的比较,一直循环到本组的第一个元素。 还需要注意一点是的索引是从step开始的。 时间复杂度最坏情况是O(n ** 阅读全文
摘要:
代码: 这个算法更简单了,记住三个字:打擂台。 时间复杂度O(n ** 2) 空间复杂度O(1) 不稳定算法。 记住四个稳定排序算法:直接插入排序、冒泡排序、二路归并排序、基数排序。剩下都是不稳定的。 阅读全文
摘要:
代码: 怎么少了一种?先写这些,以后再修改一下。 阅读全文
摘要:
代码: 二路归并,没有什么难以理解的,要注意递归的写法。还有返回值的问题。 时间复杂度:O(nlogn) 空间复杂读:O(nlogn) 跟堆排序、快速排序一样。 但它是稳定排序算法 阅读全文
摘要:
代码 堆排序真的是排序算法中我花费时间最多的算法了,最开始是理解原理上出了问题。理解了之后写代码又出了问题。 对于二叉树不是很熟的最好复习一下树的知识。 理解了之后就能很好的写代码了。 思路: 1.从len(L)/2 到1开始,建立大根堆。这里需要注意的是:这里的元素并不是一次就能移动到最终的位置的 阅读全文
摘要:
代码: 算法理解上没有什么问题,问题在算法实现上。特别注意的是几个索引,low 和 high 做一下缓存。 另外,在用递归的时候,一定注意迭代停止的判断条件。我在写代码的时候就一直忘了加判断条件,结果总是提示错误。一个简单的错误就搞这么久。 时间复杂度:O(nlogn) 空间复杂读:O(nlogn) 阅读全文