BLOG
Enjoy when you can, and endure when you must.
MAR 15, 2014/Python
从Python看排序:插入排序
在学习排序算法时,我们可以经常看到插入排序的身影。我们继续用扑克牌来描述该算法的实现方式。假设有5张牌以如下方式堆放在桌面上: 将面上的一张牌拿起并放在手上: 因为这是第一张牌,所以我们无需考虑其位置。接着再从桌面上拿起面上的一张牌并与手上的牌进行比较,然后插入到正确的位置上: 接下来的操作与此相同。将梅花5取出然后放在梅花3和梅花8之间: 重复该过程直到所有的牌都从桌上拿起并插入到手中几张牌中的正确位置。 整个过程中,插入排序同时维护两组元素,一组排序后的元素和一组待排序的元素。在上面的扑克牌例子中,桌上的一叠扑克就是待排序...
MAR 12, 2014/Python
从Python看排序:选择排序
选择排序采用了我们在生活中常用的一种方式,同样以扑克牌为例对桌上的5张扑克牌进行升序排序。 这一次,我们纵观全局并选出最小的一张。在刚才那组扑克中可以发现梅花3是最小的: 我们将其取出拿到手上,其余牌则继续放在桌上: 然后重复之前的操作,可以得到第二大的牌“梅花5”: 将其拿起并放在“梅花3”的右边。 当桌面上所有的牌都拿起后,我们手上的牌将会以从小到大的顺序放置。 选择排序就与此过程类似。只是说在代码实现中,我们实际只在一个列表中完成整个操作。选择排序同样...
MAR 11, 2014/Python
从Python看排序:冒泡排序
冒泡排序在排序算法中是最简单的一种,它通过多次遍历列表,将最大的元素冒泡到列表的头部或尾部。我们通过对四张扑克牌(花色相同)以从小到大的方式进行排序来演示该算法的工作原理。首先将扑克牌面朝上放在桌上,如下图所示: 该算法要求多次遍历扑克,每次都从头开始,并在上一次遍历的前一张结束。在每一次遍历中,总是从前两张牌开始。如果前者比后者大,则交换位置。 然后比较第二张和第三张,同样如果前者更大则互换,否则保持原样。 这样依次类推,直到将最大的那一张牌移动到最后。 下图演示了接下来的两次遍历。第二次遍历将会使第二大的牌交换至倒数第二的位置上,第三次...
MAY 23, 2013/Python
Python字典的排序方法一则
今天需要对Python的字典进行排序,以获得有效的时间序列,采用了如下方法: 首先生成一个示例字典: >>> range_a = random.sample(range(0, 10), 10) >>> range_b = random.sample(range(10, 20), 10) >>> range_a [9, 1, 7, 6, 5, 0, ...
1