基数排序 基数排序算法的思想很有趣,他不依靠比较排序。而是采用分配式排序。基数排序也称为桶排序。基数排序有最高位优先(MSD)和最低位优先(LSD)两种。下面以最低位优先为例。 原理 准备10个容器,编号0-9,对应数字0-9。 容器是有序的(按添加顺序)然后按待排序元素的某一位(比如:个位/十位/ ...
分类:
编程语言 时间:
2017-10-29 11:02:57
阅读次数:
209
假设:有n个数需要排序。 n个数的全排列方式是A(n,n) = n! 基于比较,i<j. 在最优的情况下,可以在n!个可能中筛去一半。 也就是说剩下(n!/2)种可能. 这样的比较方式进行k次。最后筛出一种(符合要求的)排序: n!/(2k) < 1 公式推导: 2k > n! //我理解就是k表示 ...
分类:
编程语言 时间:
2017-10-16 15:01:31
阅读次数:
226
1.直接插入排序 应用:属于比较排序的一种,最基础的排序方法,稳定,时间复杂度为O(n^2),空间复杂度为S(1). 方法:设置待排数字角标为i,j = i, 把j对应数字与其前的字数逐个对比交换完成后,i++即可. 1 public class Paixu { 2 public int[] pai ...
分类:
其他好文 时间:
2017-10-15 22:24:44
阅读次数:
321
泛泛而谈晦涩难懂的概念非常的枯燥,接下来利用排序这样一个问题引入今天的主题 给定7个数字的序列:6,202,100,301,38,8,1 要求对其按照升序进行排序。 首先使用冒泡的方法进行比较排序(每次红色字体的两个数字进行比较,较大者置后) 1 6,202,100,301,38,8,1 2 6,1 ...
分类:
其他好文 时间:
2017-09-17 01:26:47
阅读次数:
197
8.1 排序算法的下界 定理8.1 在最坏情况下,任何比较排序算法都需要做Ω(nlgn)次比较。 推论8.2 堆排序和归并排序都是渐进最优的比较排序算法。 8.2 计数排序 计数排序假设n个输入元素中的每一个都是在0到k区间内的一个整数,其中k为某个整数。当k=O(n)时,排序的运行时间为θ(n)。 ...
分类:
编程语言 时间:
2017-08-16 17:05:12
阅读次数:
128
归并排序 MERGE-SORT 时间复杂度: 空间复杂度: 一、原地归并排序 步骤:将两个已有序数组组合到一个数组中并排好序。 二、自顶向下归并排序 步骤:运用递归的方法,将数组平均分为两部分,进行排序,再将前部分再分为两部分,进行排序....直到数组被分为n组两个元素比较排序 改进后的自顶向上归并 ...
分类:
编程语言 时间:
2017-08-12 21:24:21
阅读次数:
208
1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较。 排序:在集合类中,对集合类中的实体进行排序。排序基于的算法基于实体类提供的比较函数。 基本型别都提供了默认的比较算法,如string提供了按字母进行比较,int提供了按整数大小进行比较。 2:Comparable与Comparator ...
分类:
编程语言 时间:
2017-08-09 12:47:54
阅读次数:
179
【转载自】http://www.cnblogs.com/gaochundong/p/comparison_sorting_algorithms.html 比较排序算法分类 比较排序(Comparison Sort)通过对数组中的元素进行比较来实现排序。 比较排序算法(Comparison Sorts ...
分类:
编程语言 时间:
2017-07-26 14:42:28
阅读次数:
254
快速排序(简称快排)因为其效率较高(平均O(nlogn))经常在笔试题中对其考查。 对于快排的第一步是选取一个“基数”,将会用这个“基数”与其它数进行比较交换。而这个“基数”的选择将影响到快排的效率如何,但如果为了选择基数而选择基数则会本末倒置。例如为了找到最佳基数,则需要在整个待排序列中找到中位数 ...
分类:
编程语言 时间:
2017-06-27 00:57:00
阅读次数:
181
归并排序里运用到算法里很重要的一个思想——分治法:将原问题分解为几个规模较小但类似于原问题的子问题——《算法导论》。在每一层递归中都有3个步骤: 1.分解问题 2.解决问题 3.合并问题的解 举例待排序数组:{6, 5, 3, 1, 7, 2, 4},将它原始序列做分解。 可以经过不断的递归分解可以 ...
分类:
编程语言 时间:
2017-06-24 09:59:22
阅读次数:
153