算法
飘飘白云
用简单的方式把事情做到极致。
展开
-
【排序】排序算法之插入排序
排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重,其重要性无需多言。下文将介绍常用的如下排序方法,对它们进行简单的分析和比较,并提供 C/C++ 语言实现。所谓排序,就是要将一堆记录,使之按关键字递增(或递减)次序排列起来。根据排序所采用的策略,可以分为如上五种:1、插入排序(直接插入排序、希尔排序);2、交换排序(冒泡排序、快速排序);3、选择排序(直接选择排序、堆排序);4、归并排序;5、桶排序(桶排序,基数排原创 2011-03-03 21:54:00 · 2189 阅读 · 0 评论 -
【排序】排序算法之交换排序
前面我们讲了插入排序,下面接着来讲交换排序。交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。原创 2011-03-04 23:51:00 · 1507 阅读 · 0 评论 -
【排序】排序算法之选择排序
前面讲了插入,交换排序,下面接着来讲选择排序。选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。常用的选择排序方法有直接选择排序和堆排序。原创 2011-03-09 21:56:00 · 1790 阅读 · 0 评论 -
【排序】排序算法之归并排序
前面讲了插入排序,交换排序,选择排序,下面接着来讲归并排序。归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。基本思想:设两个有序的子序列(相当于输入序列)放在同一序列中相邻的位置上:array[low..m],array[m + 1..high],先将它们合并到一个局部的暂存序列 temp (相当于输出序列)中,待合并完成后将 temp 复制回 array[low..high]中,从而完成排序。原创 2011-03-13 15:27:00 · 2103 阅读 · 0 评论 -
【排序】排序算法之分配排序
前面讲了插入排序,交换排序,选择排序,归并排序,下面接着来讲桶排序,基数排序。桶排序和基数排序均属于分配排序。分配排序的基本思想:排序过程无须比较关键字,而是通过用额外的空间来"分配"和"收集"来实现排序,它们的时间复杂度可达到线性阶:O(n)。简言之就是:用空间换时间,所以性能与基于比较的排序才有数量级的提高!原创 2011-03-18 23:52:00 · 6324 阅读 · 0 评论 -
【树】树算法之 B 树
B 树是一种被设计成专门存储在磁盘上的平衡查找树。因为磁盘的操作速度要大大慢于随机存取存储器,所以在分析B 树的性能时,不仅要看动态集合操作花了多少计算时间,还要看执行了多少次磁盘存储操作。 B 树与红黑树(下一篇介绍)类似,但在降低磁盘I/O 操作次数方面要更好一些。许多数据库系统就使用 B 树或 B 树的变形来存储信息,想象一下一棵每个节点包含 1001 个 key 的高度为 2 的 B 树能容纳多少数据啊,而在内存中我们只存储了一个节点,在需要的时候再从磁盘中读取所需的节点。本文用 C 语言实原创 2011-03-21 23:18:00 · 2072 阅读 · 0 评论 -
[算法]常用排序,查找,树算法集锦
前面写了好些排序,红黑树,B 树算法的文章,还剩下查找这一大块没有写,查找相关的算法代码已经实现,但是却没有写查找算法日志的闲情了,只好先在这里放出代码来,以后有空有闲情再补上吧。算法代码 Google 仓库:点击这里原创 2011-04-10 00:57:00 · 2274 阅读 · 0 评论 -
从贝叶斯定理说开去
从贝叶斯定理说开去罗朝辉 (http://kesalin.github.io/)CC 许可,转载请署名并保留出处简介贝叶斯定理是18世纪英国数学家托马斯·贝叶斯(Thomas Bayes)提出得重要概率论理论。以下摘一段 wikipedia 上的简介:所谓的贝叶斯定理源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的...原创 2014-10-22 07:51:02 · 40052 阅读 · 9 评论