堆排序就是把堆顶的最大数取出, 将剩余的堆继续调整为最大堆,具体过程在第二块有介绍,以递归实现 剩余部分调整为最大堆后,再次将堆顶的最大数取出,再将剩余部分调整为最大堆,这个过程持续到剩余数只有一个时结束 dataset = [16,9,21,3,13,14,23,6,4,11,3,15,99,8,22] for i in range(len(dataset)-1,0,-1): print("-------",dataset[0:i+1],len(dataset),i) #for in…
python内置的数据结构包括:列表(list).集合(set).字典(dictionary),一般情况下我们可以直接使用这些数据结构,但通常我们还需要考虑比如搜索.排序.排列以及赛选等一些常见的问题. 如何巧妙的使用数据结构和同数据有关的算法,在collections模块中包含了针对各种数据结构的解决方法. 1.序列分解为变量 In [5]: a = (4,5,6) In [6]: x,y,z = a In [7]: x Out[7]: 4 In [8]: z Out[8]: 6 In [9]…
An Python implementation of heap-sort based on the detailed algorithm description in Introduction to Algorithms Third Edition import random def max_heapify(arr, i, length): while True: l, r = i * 2 + 1, i * 2 + 2 largest = l if l < length and arr[l]…
最近在准备笔试题和面试题,把学到的东西整理出来,一来是给自己留个笔记,二来是帮助大家学习. 题目: 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: 输入:[1,2,3,5,2,3],6 返回:[1,2,2,3,3,5] 代码示例: 冒泡排序:O(n^2) 最基本的排序,不多解释. class BubbleSort: def bubbleSort(self, A, n): for x in xrange(n): for y in xrange(n-x-1): if A[y]…