算法
文章平均质量分 55
夏大兔
这个作者很懒,什么都没留下…
展开
-
算法学习一
教材:《算法》(第四版)-Robert SedgewickJava程序的基本结构原始数据类型、语句、数组、静态方法、字符串、标准输入/输出、数据抽象。1.原始数据类型与表达式int、double、boolean、char ps:运算符+-*/ 都是被重载过的,会对不同类型执行不同的操作2.语句break:立即从循环中退出; continue:立即开始下一轮循环。3.数组double[] a =原创 2016-07-11 19:16:07 · 417 阅读 · 0 评论 -
算法学习二
抽象数据类型ADT是一种能够对使用者隐藏数据表示的数据类型 实例变量,一般只用private和final来修饰,如果使用public,那么根据定义,这种数据类型就不是抽象的了; 构造函数,名称和类名相同无返回值,初始化实例变量,可重载; 实例方法,实现数据类型,代码和实现静态方法(函数)的代码完全相同;关键的不同是:可以访问并操作实例变量;在实例方法中对变量的引用指的是调用该方法的对象中的值;换句话原创 2016-08-01 11:18:10 · 241 阅读 · 0 评论 -
算法学习——六个经典排序算法
六个经典排序算法 最近在开始看算法书,从最经典的排序算法开始,用C++实现了六个经典的排序算法,记录下来,以便日后翻阅。 时间复杂度O(N*N) 冒泡排序 选择排序 插入排序 时间复杂度O(NlgN) 快排 合并排序 堆排序 Show me the Code #include #include using namespace std; class Sort{ public原创 2018-01-29 12:52:06 · 366 阅读 · 0 评论 -
算法学习——子序列性质相关经典算法
Longest Common Subsequence(LCS,最长公共子序列) DP算法 状态f[i][j]: 字符串A前i个字符和字符串B前j个字符的LCS 转移方程: if A[i-1] != B[j-1], f[i][j]=max{f[i−1][j],f[i][j−1],f[i−1][j−1]}f[i][j]=max{f[i−1][j],f[i][j−1],f[i−1][j−1]}...原创 2018-02-24 13:32:49 · 342 阅读 · 0 评论 -
算法学习——堆排序
堆排序 类似于选择排序,但是相比于选择排序,利用“堆”的性质,提供了一种从未排序部分找到最大元素的有效方法,所需要的比较次数少得多。 Tips: 时间复杂度:O(nlogn),最坏情况下仍为O(nlogn),因为“堆”使得速度有保证。 空间复杂度:O(1) 是一种不稳定排序 如果要升序排,那么就要构建最大堆,每次调整完就把堆顶元素与最后一个元素交换,然后最后一个元素不再参与...原创 2018-06-21 14:44:05 · 229 阅读 · 0 评论 -
算法学习——快速排序
快速排序 采用了分治法。 和归并排序正好互补:归并排序是将有序的子序列不断归并;快排是将序列不断分割,当子序列有序时,整个序列也有序。 Tips: 平均时间复杂度为:O(nlgn),最差为O(n^2); 快速排序的最好情况是每次都能正好能将数组半分; 最差情况是每次分割只能分成1个和另外的; // 每一次Partition都是在寻找基准pivot的合适分割位置 i...原创 2018-06-21 16:57:12 · 243 阅读 · 0 评论