题目 解析: C++ // 第20节 相邻两数最大差值练习题 // 基于桶排序的思想完成,不考虑两个相同的桶内的差值,只考虑该桶的最小值减去上一个桶的最大值,最大的就是最大值。 class Gap { public: int maxGap(vector A, int n) { // write co ...
分类:
编程语言 时间:
2018-08-10 01:31:14
阅读次数:
164
结论:由于计数排序不是基于比较的排序,所以时间复杂度可以突破O(nlgn);计数排序时间复杂度为O(n),额外空间复杂度为O(n); Java实现代码如下: ...
分类:
编程语言 时间:
2018-08-06 00:46:19
阅读次数:
181
#include #include #include typedef int ElementType; #define DIGIT 31 #define RADIX_10 10 int GetNumInPos(ElementType Num,int Pos) { ElementType Temp =... ...
分类:
编程语言 时间:
2018-08-05 22:39:30
阅读次数:
198
1 #include 2 #include 3 4 #define MAXINPUTNUM 5000 5 6 typedef int ElementType; 7 8 void BucketSort(ElementType *Array,int ArrayLen) 9 { 10 int i; 11 ... ...
分类:
编程语言 时间:
2018-08-05 22:30:28
阅读次数:
149
在算法设计中,我们通常会使用到以下这些排序算法: 其中,第二类算法的时间复杂度是最低的,而第三类算法是换了一种思路的排序方式。它们不是按数的大小来比较,而是利用数位划分,和数字间的映射关系而进行排序的,这些排序算法的时间复杂度不仅仅跟数字的个数n有关,也和数据的范围有关。 离散化 离散化就是把一些分 ...
分类:
编程语言 时间:
2018-08-02 01:48:14
阅读次数:
176
文字描述 基数排序是和前面各类排序方法完全不相同,前面几篇文章介绍的排序算法的实现主要是通过关键字间的比较和移动记录这两种操作,而实现基数排序不需要进行记录关键字间的比较。基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。先介绍下什么是多关键字排序,以引入链式基数排序算法。 先介绍什 ...
分类:
编程语言 时间:
2018-07-31 21:57:13
阅读次数:
172
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意:不能使用代码库中的排序函数来解决这道题。 示例: 进阶: 一个直观的解决方案是使用计数排序的两 ...
分类:
其他好文 时间:
2018-07-29 20:30:15
阅读次数:
219
选择排序,冒泡排序,快速排序,归并排序,插入排序,希尔排序,计数排序,桶排序,基数排序 以上是一些常用的排序算法。 选择排序 for(int i = 0; i using namespace std; int n; int a[10] = {9, 19, 7, 2, 4, 5, 6, 8, 10, ...
分类:
编程语言 时间:
2018-07-28 12:03:28
阅读次数:
174
举个例子,一位数组,从小到大进行排序。 常见的排序,是冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序、基数排序、桶排序等。 1.冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从 ...
分类:
编程语言 时间:
2018-07-26 00:21:57
阅读次数:
238
通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn)~O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序 另一种是非比较排序,时间复杂度可以达到O(n),主要有:基数排序,基数排序,桶 ...
分类:
编程语言 时间:
2018-07-21 21:33:03
阅读次数:
164