摘要:
一.线性时间排序 1.排序算法复杂度都可以是线性时间O(n) 2.都是在一定假设的条件下进行 二.计数排序:假设输入的n个数据的每一个都是0-k区间的一个整数,对于一个元素x,确定小于x的元素个数,把x放在对于数组位置 时间复杂度:O(k+n);当k=O(n)时, 1 #计数排序 2 def cou 阅读全文
摘要:
一.在分治策略中,递归地求解一个问题,在每层递归中应用如下三个步骤: 二.分治法分析归并排序 (1)把原数组分成两部分进行处理 (2)递归求解这两部分 (3)把求解好的两部分合并起来 三.二分查找:在数组中查找x的位置 (1)分:把x和已排序好数组的中间值进行比较 (2)治:在子数组中递归 (3)合 阅读全文
摘要:
1 import math 2 #定义一个类,堆 3 class heap: 4 def __init__(self,A): 5 self.list=A#堆是由列表得来 6 self.heap_size = len(A)#堆的大小是列表的长度 7 def parent(self,i): 8 #i的父 阅读全文
摘要:
一.问题描述 输入:n个数的一个序列<a1,a2,...,an> 输出:输入序列的一个从小到大的排序<a1',a2',...,an'> 二.比较排序 1.在排序的最终结果中,各元素的次序依赖于它们之间的比较 2.快速排序,归并排序,插入排序,堆排序都是比较排序, 3.堆排序和归并排序都是渐近最优的比 阅读全文
摘要:
一.算法 1.算法:算法面向一个问题,体现解决问题的流程,问题定义输入和输出的关系, 2.特点:有穷性、确定性、能行性、输入、输出 二.算法设计和分析 1.算法一般用伪代码描述,重点体现流程 2.算法的运行时间: (1)考虑输入的情况,相同规模不同的输入可能导致算法的运行时间不同,比如顺序和逆序的排 阅读全文