基数排序复杂度是(n+b)logn/logb 我们找一个基数 每次处理一部分位 从低位到高位处理 t是出现次数 s是这个桶管辖的起点 然后就可以写了 不过我这里是指针版的 有点难看 #include<cstdio> #include<cstring> #include<algorithm> int ...
分类:
编程语言 时间:
2017-10-04 00:20:26
阅读次数:
176
八大算法原理详解 交换函数:注意要按引用传递,否则无法真正交换两个数的值 1、直接插入算法 2、希尔排序算法【暂缺】 3、直接选择排序算法 4、堆排序算法【暂缺】 5、冒泡排序算法 6、快速排序算法 7、归并排序算法【注意:数组按值传输】 8、基数排序算法【暂缺】 ...
分类:
编程语言 时间:
2017-10-01 17:38:31
阅读次数:
370
听说有十大排序算法,先学习一下快速排序和计数排序算法。 一:快速排序 快速排序主要就是每一个找到当前取出来的标尺的数的位置,然后把小于它的数放在左边(从小到大排),把大于它的数放在右边。然后利用递归分左右继续找位置放数字,这个过程有点类似之前的根据前序和中序找后序的题目。递归的出口就是当只有一个数的 ...
分类:
编程语言 时间:
2017-09-30 17:45:00
阅读次数:
223
第一部分 基础知识 第1章 算法在计算中的作用 第2章 算法基础 第3章 函数的增长 第4章 分治策略 第5章 概率分析和随机算法 第二部分 排序和顺序统计量 第6章 堆排序 第7章 快速排序 第8章 线性时间排序 第9章 中位数和顺序统计量 第三部分 数据结构 第10章 基本数据结构 第11章 散 ...
分类:
编程语言 时间:
2017-09-27 10:07:45
阅读次数:
541
排序的稳定性 通俗地讲就是保证排序前后两个相等的数的相对顺序不变。 例如:Ai=Aj,排序前Ai在Aj之前,排序后Ai还在Aj之前,则称这种排序算法是稳定的。 排位算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序, ...
分类:
编程语言 时间:
2017-09-26 13:00:10
阅读次数:
224
转载自http://blog.csdn.net/qy1387/article/details/7752973 分类: 1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间 ...
分类:
编程语言 时间:
2017-09-23 21:21:38
阅读次数:
191
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码: / /使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该 ...
分类:
编程语言 时间:
2017-09-23 20:13:09
阅读次数:
864
一.排序算法分类 1.插入排序法 直接插入排序,希尔排序(面试最常问) 2.交换排序 冒泡排序,快速排序(面试最常问) 3.选择排序 直接选择排序,堆排序(面试最常问) 4.归并排序 归并排序 5.基数排序 以上算是最常用的一些算法。 二.空间、时间复杂度、稳定性 三.性能分析 1.O(n^2)性能 ...
分类:
编程语言 时间:
2017-09-21 21:17:16
阅读次数:
226
简介 基数排序和桶排序有些像,都不需要比较数据大小,而其他排序算法要。 基数排序分为以下两类 一.最高位优先(Most Significant Digit first)法,简称MSD法: 先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的关键码继续这样的排序分 ...
分类:
编程语言 时间:
2017-09-20 23:30:20
阅读次数:
419
1 计数排序,稳定 复杂度o(k + n) public static int[] countingSort(int[] nums) { int n = nums.length; int k = 0; for (int i = 0; i < n; i++) { k = Math.max(k, num ...
分类:
编程语言 时间:
2017-09-17 13:23:18
阅读次数:
223