摘要:
任何比较排序(归并排序,插入排序等等)的时间复杂度在最坏的情况下都需要做Ω(n * lgn)次比较,而这里的的计数排序由于它不是基于比较排序的思路,所以它的复杂度不收这个限制,它的时间复杂度为Θ(n),为线性时间。同时,计数排序一个重要的性质就是它是稳定的,也就是说,对于两个相同的数来说,在输入数组 阅读全文
摘要:
思路参考《算法导论》P95 这里有位老哥的文章写的挺形象的呀 http://developer.51cto.com/art/201403/430986.htm 我是参照书上实现的,觉得挺简单的 代码 运行结果: 阅读全文
摘要:
这个没啥好说的,写完上一个正好写一下这一个,都是基于堆实现的,不过这里没有用C++内置数组,原因是添加删除元素有点麻烦,所以用了vector来实现。 详细内容见《算法导论》P90 代码 1 // 基于最大堆实现最大优先队列.cpp: 定义控制台应用程序的入口点。 2 // 3 4 #include 阅读全文
摘要:
思路参考《算法导论》P84 堆排序中用到的最重要的就是堆这种数据结构,也正是因为这种数据结构能把时间复杂度控制在O(n * lgn) heapsort算法主要依赖于两个函数 MAX_HEAPIFY(int *A,int i,int len) 用于维护最大堆,时间复杂度为O(lgn),注意书上描述这个 阅读全文
摘要:
最近在看《算法导论》,刚看到分治策略里的最大子数组问题,觉得这个写的不错,记录在这里,方便自己以后复习。 问题描述见《算法导论》P38 原文地址:https://www.cnblogs.com/Christal-R/p/Christal_R.html 代码如下: 运行结果如下: 阅读全文
摘要:
其实这个程序最开始是大二下学期Java的一次平时作业,当时只要求产生几个随机矩阵并对这些矩阵进行计算。 所以当时没去实现现在这么丰富而且实用的功能。不过当时倒是挺想去做的,无奈有些不知道怎么去实现。 现在是大三下的小学期,前不久刚考完期末,闲来无事把之前落下的这事给补上了,也算是了结了老夫的一大心事 阅读全文
摘要:
元旦刚过,祝大家新年快乐呀! 感觉2017实在是过得太快了。。。 正如之前所说,这个游戏最开始的版本其实在去年5月份就写好了,其实当时就已经实现了主要功能,后来经历了几次更新,加入了Undo功能,加入了退出时记录游戏进度,重新打开时可继续上次的进度继续,前不久又把游戏界面风格调整了一下,然后昨天加入 阅读全文