基数排序算法,其原理是将整数按位数切割为不同的数组,然后按每个位数分别进行比较。
基数排序的方法既可以采用LSD(Least significant digital),从键值的最右边开始,也可以采用MSD(Most significant digital),从键值的最左边开始。
基数排序法的效率主要取决于排序不同位的数字时所采用的稳定的中间排序算法。
常用的稳定的排序算法包括:插入排序、合并排序、冒泡排序、折半插入排序、基数排序等。
基数排序算法相比于其他算法...
分类:
其他好文 时间:
2014-06-17 22:55:55
阅读次数:
414
堆排的灵感源自于堆的数据结构。它是一种原地排序算法,不需要额外的临时数组。
基本思想
堆排的基本思想是:
先建立一个最大堆
将最大的元素移动到数组末尾,减小堆的大小,调整最大堆使其符合最大堆的性质
重复第二步,直到最大堆耗尽为止
第一个步骤建立最大堆的代码非常简单,只要对每个节点执行sink操作即可。
...
分类:
其他好文 时间:
2014-06-10 06:55:08
阅读次数:
295
算法复杂度用来表示在解决某个问题时,算法的性能表现。
复杂度上限,就是某个具体的已经实现的算法能够保证在一定时间内解决问题
复杂度下限,就是通过数学方法证明,所有的算法都必须花费一定的时间才能解决问题
最优化算法,就是可能达到的最小复杂度的算法,通常介于复杂度上限和下限之间
比如排序问题中:
计算模型为决策树
使用比较次数作为开销...
分类:
其他好文 时间:
2014-06-08 18:20:02
阅读次数:
190
stooge排序是一种递归排序算法,这种排序算法不仅慢于一般的有效排序算法(如:插入排序,合并排序,堆排序和快速排序),甚至慢于冒泡排序。是一种简单但低效的排序算法。...
分类:
其他好文 时间:
2014-06-07 01:26:17
阅读次数:
173
冒泡排序法是一种经典的、入门级的排序算法。它重复地遍历整个数组,对数组的元素进行两两比较,如果两数的顺序有误,则将两数字交换。
由于在比较的过程中,最小的数先变换到数列的顶端,其次是第二小的数……直至所有数字完成排序,因而得名冒泡排序。...
分类:
其他好文 时间:
2014-06-05 11:39:09
阅读次数:
194
目标
对所有类型的数据进行排序。
问题
排序函数如何知道比较的是哪种类型的数据呢?
回调函数
这时候就需要引入回调函数的概念了。回调函数就是将可执行的代码作为参数进行传递。
实现回调的方法
在Java中可以通过接口来实现,在C语言中可以通过函数指针来实现,C++中可以通过class-type functor,也就是重载操作符oper...
分类:
其他好文 时间:
2014-06-02 18:57:32
阅读次数:
393
六月到了。开始找工作的节奏,IT方面知识储备严重欠缺,定计划,更新博客,记录自己的准备历程。1、数据结构 15天2、常用算法(排序、动态规划、贪心等)
30天3、数据挖掘算法 15天4、移动端、web端开发入门 15天5、操作系统 10天共计85天,那时将近9月,还能赶上找工作的大潮。何...
分类:
其他好文 时间:
2014-06-02 11:46:07
阅读次数:
314
常见排序算法主要有:插入排序(直接插入排序、希尔排序)选择排序(直接选择排序、堆排序)交换排序(冒泡排序、快速排序)归并排序基数排序外部排序一.直接插入排序算法思想:在一个待排序列中,从第二个元素开始,依次进行排序,每次都将待排序元素从后往前,依次与前面的元素进行比较,从而将带排序元素移动到一个合适...
分类:
其他好文 时间:
2014-05-21 20:03:36
阅读次数:
353
题意:n个点,n-1条边构成无向树,每个节点有权,Q次询问,每次或问从a->b的最短路中,权第k大的值,/或者更新节点a的权,
思路:在线LCA,先dfs生成树0,标记出层数和fa[](每个节点的父亲节点)。在对每次询问,走一遍一次公共祖先路上
的权,保持,快排。n*logn*q
#include //187MS
#include
#include
#include
using ...
分类:
其他好文 时间:
2014-05-15 23:36:52
阅读次数:
419
数据结构中的排序算法。排序算法的相关知识:(1)排序的概念:所谓排序就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。(2)稳定的排序方法:在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的。相反,如果发生改变,这...
分类:
编程语言 时间:
2014-05-14 23:06:00
阅读次数:
725