09 2013 档案

基数排序
摘要:编程论到极致,核心非代码,即思想。所以,真正的编程高手同时是思想独到及富有智慧(注意与聪明区别)的人。每一个算法都是一种智慧的凝聚或萃取,值得我们学习从而提高自己,开拓思路,更重要的是转换思维角度。其实,我们大多数人都活在“默认状态”下。没有发觉自己的独特可设置选项-----思想。言归正传(呵呵!恢复默认状态),以下学习基数排序。【1】基数排序以前研究的各种排序算法,都是通过比较数据大小的方法对欲排数据序列进行排序整理过程。而基数排序却不再相同,那么,基数排序是采用怎样的策略进行排序的呢?简略概述:基数排序是通过“分配”和“收集”过程来实现排序。而这个思想该如何理解呢?请看以下例子。(1)假设 阅读全文

posted @ 2013-09-27 23:14 虚若怀谷 阅读(277) 评论(0) 推荐(0)

《算法导论》学习总结 — 8.第八章(2) 计数排序
摘要:这一节讲的是线性排序。一.计数排序(Counting Sort)基本思想:对每一个输入元素x,确定出小于x的元素个数。适用范围:适用于输入是由小范围的整数构成的序列。稳定性:算法是稳定的。具体实现:#include using namespace std;// arr--初始输入数组, res--存放排序结果的数组,hash临时存储区[0...k]int arr[100], res[100], hash[100];int len, k = -1;void PrintHash(){ cout 0; --i) { res[hash[arr[i]]] = arr[i]; --hash[arr[i.. 阅读全文

posted @ 2013-09-27 23:13 虚若怀谷 阅读(251) 评论(0) 推荐(0)

《算法导论》学习总结 — 7.第八章(1) 决策树
摘要:第八章将介绍几种非比较排序—计数排序,基数排序,桶排序,这三种排序都在线性时间下运行的。这一节决策树其实是对前面的堆排序,快排等是最优的比较算法的证明,首先说下《算法导论》上对决策树的定义:一棵决策树是一棵满二叉树(注意看下面解释),表示某排序算法作用于给定输入所做的所有比较,而控制结构,移动等都被忽略了。注意:这里个人认为定义是错误的,决策树不是一棵满二叉树,连完全二叉树都不是。(不知道有没有朋友看到这里和我想法一样?)首先看看只有三个元素时,决策树的图:在决策树中,每个内结点都用i:j表示比较下标为i数组元素与下标为j的数组元素的大小。每一个叶结点是一个n个元素的全排列。所以排序算法的执行 阅读全文

posted @ 2013-09-27 22:33 虚若怀谷 阅读(332) 评论(0) 推荐(0)

《算法导论》学习总结 — 6.第七章 快速排序
摘要:其实这一篇我老早就写过了,只不过最近在总结《算法导论》,而第七章就是快速排序,我当初总结的快排也是根据算法导论来的,为了方便大家阅读,我在这里把曾经写过的重新再贴一遍。前几天写过一个堆排序的文章(http://www.wutianqi.com/?p=1820),里面谢了很多讲解和代码注释,个人感觉快速排序不是很难,所以不想写讲解,也不需要写注释,大家如果不明白什么是快速排序,可以去看下文章最后我推荐的几个链接。我查过网上很多关于快排的文章和代码,但是基本都是最原始的快排,即霍尔(Hoare)快排。想必大家也没有注意这些,我准备把霍尔快排,算法导论上的快排和随机化快排的代码一起发出来,供大家对比 阅读全文

posted @ 2013-09-27 22:16 虚若怀谷 阅读(262) 评论(0) 推荐(0)

堆排序
摘要:堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 Key[i]#includeusing namespace std;void HeapAdjust(int *a,int i,int size) //调整堆 { int lchild=2*i 阅读全文

posted @ 2013-09-25 23:29 虚若怀谷 阅读(201) 评论(0) 推荐(0)

支持向量机(Support Vector Machine)-----SVM之SMO算法(转)
摘要:此文转自两篇博文 有修改序列最小优化算法(英语:Sequential minimal optimization, SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法。SMO由微软研究院的约翰·普莱特(John Platt)发明于1998年,目前被广泛使用于SVM的训练过程中,并在通行的SVM库libsvm中得到实现。1998年,SMO算法发表在SVM研究领域内引起了轰动,因为先前可用的SVM训练方法必须使用复杂的方法,并需要昂贵的第三方二次规划工具。而SMO算法较好地避免了这一问题。前面最后留下来一个对偶函数最后的优化问题,原式为: -----------------这个 阅读全文

posted @ 2013-09-09 09:38 虚若怀谷 阅读(334) 评论(0) 推荐(0)

导航