
Python数据结构与算法
算法的学习,最好的编程语言是什么?Python 可能不是最好的实现语言,但至少要比 C/C++ 优异得多。它号称可执行的伪代码,简直就是为算法实现而生,它将算法关注的焦点回归算法本身,而不是C/C++等繁琐的语言细节。
五道口纳什
wx公众号/B站:五道口纳什
展开
-
链表面试细节
Python 中的 list 并不是我们传统(计算机科学)意义上的列表,这也是其 append 操作会比 insert 操作效率高的原因。传统列表——通常也叫作链表(linked list)——通常是由一系列节点(node)来实现的,其每一个节点(尾节点除外)都持有一个指向下一个节点的引用。其简单实现:class Node: def __init__(self, value, ...原创 2016-03-21 08:00:18 · 13087 阅读 · 3 评论 -
Python 数据结构与算法——tree(树)
(1)节点:Node、根节点:Root、叶子节点:LeafNode、内部节点:InternalNode; 我们可将该树表示为一个二维列表(lists of lists):>>> T = [['a, b'], ['c'], ['d', ['e', 'f']]]在某些情况下,由于我们可能事先知道其内部节点(Internal Node)所能拥有的最大子节点数,例如,二叉树,各节点最多只能拥有两个子原创 2016-03-21 09:03:40 · 23300 阅读 · 0 评论 -
Python 数据结构与算法——递归
所谓递归,其实就是指某一函数——直接或间接——调用自己的操作。下面将演示一个如何用递归的方式求解某一序列的求和:def S(seq, i=0): if (i == len(seq)): return 0 return S(seq, i+1) + seq[i]原创 2016-03-21 09:55:47 · 1768 阅读 · 0 评论 -
Python 数据结构与算法——归并排序
排序——归并排序 上文的 Python 实现还是稍显啰嗦,未能充分发挥 Python 语言的优势,以及“Python——一种可执行的伪代码”的论断。本文介绍一种更为简洁的归并排序的实现:def mergesort(l): m = len(l)//2 lft, rgt = l[:m], l[m:] if len(lft) > 1: lft = mergesort(lft)原创 2016-03-21 10:23:43 · 1465 阅读 · 0 评论 -
Python 数据结构与算法——侏儒排序
侏儒排序作为排序算法的历史地位远不及对其进行时间复杂度分析的地位来得高。def gnomesort(l): i = 0 while i < len(l): if i == 0 or l[i-1] <= l[i]: i += 1 else: l[i-1], l[i] = l[i], l[i-1]原创 2016-03-21 11:06:51 · 1734 阅读 · 0 评论 -
Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数
先排序,再。。。(毕竟归并排序的时间复杂度仅为 O(nlogn)O(n\log n))排序的幽灵。排序和查找真是一对好基友。来看基础版本:from random import randrangeseq = [randrange(10**10) for _ in range(100)]dd = float('inf')for x in seq: for y in seq:原创 2016-03-21 12:49:59 · 7812 阅读 · 3 评论 -
Python 数据结构与算法——插入排序(insertion sort)
我们先归纳性地假设前 n−1n-1 个元素已经完成排序,现在要将第 nn 个元素插入到正确位置。如下为递归版的插入排序的代码清单:# n == len(seq)-1, seq[n] 表示序列的最后一个元素def ins_sort_rec(seq, n): if n == 0: return ins_sort_rec(seq, n-1) j = n while j原创 2016-03-21 15:02:47 · 2571 阅读 · 0 评论