算法
lllong33
这个作者很懒,什么都没留下…
展开
-
Python 排序算法(一)、时间复杂度、冒泡、选择插入、对数器、递归、归并、小和、逆序对
认识时间复杂度常数时间的操作:跟数据量没有关系,每次时间都是固定的在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为0(f(N))评价算法好坏,先看时间复杂度的指标,然后分析不同数据样本下的实际运行时间(考虑常数项时间)实例:一个有序数组A,另外一个无序数组B,请打印B中所有不在A中的数,A数组长度为N,B数组长度为M...原创 2019-05-10 17:04:15 · 897 阅读 · 1 评论 -
Python 排序算法(二)荷兰国旗问题、随机快排、堆排序
问题1:荷兰国旗问题给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)import randomdef netherlands_flag(arr, l, r, num): less = l - 1 # 便于理解 more = r + 1 ...原创 2019-05-28 15:42:44 · 296 阅读 · 0 评论 -
Python 算法(二)补充,排序算法稳定性,工程中综合排序,比较器,桶排序
四、排序算法稳定性及其汇总定义:排序过程保证相同元素次序不发生改变。意义:业务需求,三个属性(name, age, height)的时候, height排序的时候,原始顺序age不会发送改变(按照height和age排序)。稳定性排序:冒泡排序、插入排序、归并排序不稳定性排序:选择排序:[4,4,4,3],第1个4和3交换位置,发送变化快排:[4,4,4,5], 随机选择的4跟...原创 2019-06-27 22:27:29 · 250 阅读 · 0 评论 -
Python 算法(五) 哈希函数(哈希表)、RandomPool结构、并查集结构、岛问题
哈希函数: 又称散列算法、哈希函数,是从任何一种数据中创建小的数字“指纹”的方法。将消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。或者说,即MD5、SHA等函数,实现将大集合映射为随机的小集合。小集合具有均分性哈希函数的技巧16进制的数,0-f中的一个数, 取值范围[0, 16*16=2**64-1)输入无穷大,输出固定哈希冲突,两个不同输入对应一个输出当输入域...原创 2019-07-07 16:57:58 · 483 阅读 · 0 评论 -
Python 算法(三、1) 链表
1、判断一个链表是否为回文结构给定一个链表的头节点head,请判断该链表是否为回文结构。例如: 1->2->1,返回true。 1->2->2->1,返回true。15->6->15,返回true。 1->2->3,返回false。进阶:如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)。思路1:遍历过程中,将所有结...原创 2019-06-29 17:54:04 · 191 阅读 · 0 评论 -
Python 算法(三、2) 矩阵
1、转圈打印矩阵给定一个矩阵如下,转圈的方式打印它,结果为[1,2,3,4,8…], 格外空间复杂度为O(1)1 2 3 45 6 7 89 10 11 1213 14 15 16思路:坐标和圈来打印,利用左上角和右下角坐标解决边界问题,只有一行或者一列class PrintMatrixSpiralOrder: def __init__(self, ma...原创 2019-06-29 17:55:28 · 874 阅读 · 0 评论 -
Python 算法(三、3) 队列和栈
一、固定数组实现队列和栈class ArrayStack: def __init__(self, arr): self.arr = arr self.size = 0 def peek(self): if self.arr == 0: return None return self.arr[...原创 2019-06-29 17:56:07 · 184 阅读 · 0 评论 -
Python 算法(四) 二叉树,先序,中序,后续,完全、平衡、搜索二叉树
(不重要) 终端打印一颗二叉树,便于观察class Node: def __init__(self, value, left=None, right=None, parent=None): self.value = value self.left = left self.right = right self.parent =...原创 2019-06-30 14:15:32 · 227 阅读 · 0 评论