算法导论习题
bojdoog
这个作者很懒,什么都没留下…
展开
-
python实现计数排序
代码如下:# -*- coding:utf-8 -*-# python实现计数排序def CountingSort(L, M, k): C = [] for i in range(k+1): C.append(0) #C列表表示的是在列表L中各个元素的个数 for j in range(len(L)): C[L原创 2016-01-18 20:57:15 · 633 阅读 · 0 评论 -
用最大堆模拟最大优先级序列(Python实现)
####为了不失一般性,本文采用的是d叉堆实现。 代码如下:# -*- coding:utf-8 -*-# 此时假设的的 d = 4 def ListMax(s): '''返回列表s中的最大值的下标''' max = 0 for i in range(1,len(s)): if s[i] > s[max]: max = i原创 2016-01-14 22:09:19 · 612 阅读 · 0 评论 -
Python实现快速排序
代码如下:# -*- coding:utf-8 -*-# Python实现快速排序def QuickSort(li, p, r): if p < r: q = Partition(li, p, r) QuickSort(li, p, q-1) QuickSort(li, q+1, r)def Partition(li, p, r):原创 2016-01-14 17:44:51 · 384 阅读 · 0 评论 -
python实现堆排序
实现代码如下:# -*- coding=utf-8 -*-def MaxHeapify(li, i): '''本函数的功能是在数组li中,使下标为i对应的值遵循最大堆的性质 即它的子女必须小于等于它,以此类推,直到这个值满足条件或者它在 叶子节点上''' l = 2 * i +1 r = 2 * i +2 largest = i原创 2016-01-13 21:52:39 · 356 阅读 · 0 评论 -
有关在某个数组中查找一个值的算法(Python实现)
第一种算法思路:第一步:随机出来一个数组的下标 第二步:判断下标对应的值是否等于被查找的值,是的话终止,已找到,否的话转第三步。 第三步:判断是否随机完数组的所有下标,是的话终止,没找到,否的话转第一步。 代码如下:#本程序的功能是在字典中查找存在某个值import randomdi = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}key = 2di原创 2016-01-12 16:46:52 · 9714 阅读 · 0 评论 -
Python实现归并排序的两种方法
第一种#归并排序(递归)的python实现def merge(li,p,q,r): n1 = q - p + 1 n2 = r - q L = [] R = [] for i in range(n1): L.append(li[p+i]) for j in range(n2): R.append(li[q+1+j])原创 2016-01-10 21:53:45 · 832 阅读 · 0 评论 -
python实现插入排序和选择排序
#插入排序算法的Python实现#数据类型用的是Python中的list#InsertSort1是插入升序算法#InsertSort2是插入降序算法import randomdef InsertSort1(li): for i in range(1,len(li)): key = li[i] j = i - 1 while j >=0 and li[j]>key: l原创 2016-01-09 14:31:40 · 522 阅读 · 0 评论 -
针对于第一章算法在计算中的作用的习题
1.2.2 题目:假设我们要比较在同一台计算机上插入排序和合并排序的实现。对于规模为n的输入,插入排序要运行8步,而合并排序要运行64n*lgn()步,当n取怎样的值时,插入排序的性能要优于合并排序?解答:对于同一台计算机,步骤越少,运行时间也少。肯定性能越好,可以得到,当时,插入排序的性能要优于合并排序。即求(n>0)小于0的部分。原创 2016-01-08 08:49:15 · 446 阅读 · 1 评论 -
python实现找到第i小的元素
代码如下:# -*- coding:utf-8 -*-# python实现找到第i小的元素import randomdef RandomizedSelect(li, p, r, i): '''li为所要操作的列表 p为起始位置 r为结束位置 i表示第i小元素''' if p == r: return li[p] q原创 2016-01-18 21:10:14 · 719 阅读 · 0 评论 -
Python实现同时找最大最小值(优化版本)
代码如下:# -*- coding:utf-8 -*-#其中假设n是奇数#如果n是偶数的话,把li[0],li[1]先比较,分别初始为最小最大值。def MinMaximum(li): '''本函数的功能是找到列表li中的最大值和最小值''' min = li[0] max = li[0] for i in range(1,len(li),2):原创 2016-01-18 21:02:51 · 3290 阅读 · 0 评论 -
关于二叉查找树中的某个节点的前趋和后继的算法(Python实现)
废话不多说,代码如下:# -*- coding:utf-8 -*-def Tree_Predecessor(x): '''给定一个二叉查找树的节点z,要求找出在中序遍历下它的前趋''' if left[x] != None: return Tree_Maximum(left[x]) y = p[x] while y != None and x ==原创 2016-03-10 22:06:25 · 1045 阅读 · 0 评论