Java数据结构和算法(三)——简单排序单单有数据还不够,...
分类:
编程语言 时间:
2014-09-23 10:09:14
阅读次数:
302
缺点:1.不适用于小数2.当数值过多,太浪费空间,比如数值范围为0~99999,那需申请100000个变量,也就是要写成a[1000000]。using System;using System.Collections.Generic;using System.Linq;using System.Te...
分类:
其他好文 时间:
2014-09-22 19:50:33
阅读次数:
253
计数排序是一种算法复杂度 O(n) 的排序方法,适合于小范围集合的排序。比如100万学生参加高考,我们想对这100万学生的数学成绩(假设分数为0到100)做个排序。我们如何设计一个 最高效的排序算法。本文不光给出计数排序算法的传统写法,还将一步步深入讨论算法的优化,直到时间复杂度和空间复杂度最优。先...
分类:
其他好文 时间:
2014-09-22 10:47:42
阅读次数:
294
鸽巢排序:鸽巢排序, 也被称作基数分类, 是一种时间复杂度为(Θ(n))且在不可避免遍历每一个元素并且排序的情况下效率最好的一种排序算法. 但它只有在差值(或者可被映射在差值)很小的范围内的数值排序的情况下实用.当涉及到多个不相等的元素, 且将这些元素放在同一个"鸽巢"的时候, 算法的效率会有所降低...
分类:
其他好文 时间:
2014-09-20 19:07:19
阅读次数:
361
(1)原理和代码以及时间复杂度分析 1.计数排序的原理:设被排序的数组为A,排序后存储到B,C为临时数组。所谓计数,首先是通过一个数组C[i]计算大小等于i的元素个数,此过程只需要一次循环遍历就可以;在此基础上,计算小于或者等于i的元素个数,也是一重循环就完成。下一步是关键:逆...
分类:
其他好文 时间:
2014-09-16 23:41:41
阅读次数:
312
一 插入排序简单插入排序希尔排序二 快速排序三 选择排序简单选择排序树形选择排序堆排四 归并排序五 基数排序
分类:
其他好文 时间:
2014-09-16 10:32:30
阅读次数:
178
计数排序计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。算法思想计数排序对输入的数据有附加的限制条件:1、输入的线性表的元素属于有限偏序集S...
分类:
其他好文 时间:
2014-09-13 17:15:25
阅读次数:
199
参考资料:算法导论note1:桶排序是另外一种以O(n)或者接近O(n)的复杂度排序的算法. 它假设输入的待排序元素是等可能的落在等间隔的值区间内.一个长度为N的数组使用桶排序, 需要长度为N的辅助数组. 等间隔的区间称为桶, 每个桶内落在该区间的元素. 桶排序是基数排序的一种归纳结果note2:待...
分类:
其他好文 时间:
2014-09-13 17:11:55
阅读次数:
217
参考资料:算法导论性能:给定n个d位数,每一个数位可以取k种可能的值,基数排序算法时间为O(d(n+k)),当d为常数,k=O(n)时,基数排序为O(n)时间优点:稳定排序缺点:不是原地排序实现代码(用户需要提供一个RSHelper的实现即可完成排序,本例给出一个随意的实现仅作示意)RadixSor...
分类:
其他好文 时间:
2014-09-12 23:22:44
阅读次数:
289
算法导论:任意一个比较排序算法,在最坏的情况下,至少要做n*lg(n)次的比较,因此堆排序与归并排序是渐近最优的比较排序算法但计数排序、基数排序和桶排序都不采用比较的方式来确定元素的顺序,因此下界n*lg(n)对它们并不适用计数排序假设被排序的元素都在范围[0, k]中,k为正整数,当k=O(n)的...
分类:
其他好文 时间:
2014-09-09 20:05:59
阅读次数:
201