排序算法有很多种,这里在复习和分析的基础上,做一个自己的总结;首先要知道有哪些排序算法,google一下,有云C语言7大经典排序算法(也有8大)。主要包括冒泡排序,快速排序,选择排序,插入排序,希尔排序,归并排序,堆排序,8大的还有基数排序。各有各的版本,代码写法也各不相同。所以这里以整理思路为先,...
分类:
编程语言 时间:
2014-07-06 23:13:49
阅读次数:
301
基数排序
一、基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。
其实现原理:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,
数列就变成一个有序序列。
二、具体操作:此排序的真正实现是通过队列的装置,先进先出...
分类:
其他好文 时间:
2014-06-18 07:30:25
阅读次数:
188
基数排序算法,其原理是将整数按位数切割为不同的数组,然后按每个位数分别进行比较。
基数排序的方法既可以采用LSD(Least significant digital),从键值的最右边开始,也可以采用MSD(Most significant digital),从键值的最左边开始。
基数排序法的效率主要取决于排序不同位的数字时所采用的稳定的中间排序算法。
常用的稳定的排序算法包括:插入排序、合并排序、冒泡排序、折半插入排序、基数排序等。
基数排序算法相比于其他算法...
分类:
其他好文 时间:
2014-06-17 22:55:55
阅读次数:
414
2014.06.17 06:42简介: 基数排序是一种非比较算法,通过多轮的分配与合并来排序整个数组。应用范围比较窄,根据Wikipedia的说法,它只适合整数排序。描述: 基数排序和桶排序有点类似,都是将元素按照特定依据分配到多个桶中。但它和桶排序的区别,在于它要进行不止一次的分配与合并。每次.....
分类:
编程语言 时间:
2014-06-17 21:27:20
阅读次数:
392
package chap08_Linear_Time_Sort;import static
org.junit.Assert.*;import java.util.Arrays;import org.junit.Test;public class
CopyOfSortAlgorithms { /**...
分类:
其他好文 时间:
2014-06-12 20:32:16
阅读次数:
231
计数排序条件:要排序的数组的元素必须是在一定范围的,比方是1~100。在排序之前我们必须知道数组元素的范围。思路:顾名思义:就是用一个数组来计数的。步骤:1、用一个数组来计数count[
],将要排序的数组arr[ ]的元素记为数组count[ ]数组的下标,假设数组arr[]中有两个数同样就在co...
分类:
其他好文 时间:
2014-06-10 12:56:30
阅读次数:
170
众所周知,Std::sort()是一个非常快速的排序算法,它基于快排,但又有所修改。一般来说用它就挺快的了,代码一行,时间复杂度O(nlogn)(难道不是大叫一声“老子要排序!!”就排好了么。。。)。我们也知道,不基于比较的排序可以达到O(n),比如说基数排序。什么,它是O(n
* log(10.....
分类:
其他好文 时间:
2014-06-10 00:04:07
阅读次数:
326
排序算法是我们工作中使用最普遍的算法,常见的语言库中基本都会有排序算法的实现,比如c标准库的qsort,stl的sort函数等。本文首先介绍直接插入排序,归并排序,堆排序,快速排序和基数排序等比较排序算法,然后介绍计数排序,基数排序等具有线性时间的排序算法。本文主要讨论算法的实现方法,并不会过多介绍...
分类:
其他好文 时间:
2014-06-07 21:23:31
阅读次数:
348
6. 线性时间排序
6.1 计数排序
我们之前介绍的所有排序算法,都需要依次比较输入元素之间的大小,有些甚至需要重复比较多次,我们将这一列算法统称为比较排序。
接下来,我们将讨论三种以线性时间运行的排序算法,分别是计数排序、基数排序和桶排序,这些算法都用非比较的操作来确定排序的顺序。
计数排序,该算法的基本思路是,对于某一个元素,已知数组中比该元素小的元素的个数为,则可将该元素放置在的位置上。PS:当有相同元素时,此方案需要做一些特殊处理。...
分类:
其他好文 时间:
2014-06-07 12:23:07
阅读次数:
217