排序算法 排序算法两阶段 第一阶段(比较排序) 插入排序 合并排序 堆排序 快速排序 第二阶段(非比较排序) 计数排序 基数排序 桶排序 第一阶段:比较排序 插入排序 插入排序的主要思想 : 将当前的元素放入前面合适的位置 插入排序的实现细节 : heap_sort小结: heap_sort中最重要 ...
分类:
编程语言 时间:
2018-10-06 20:40:56
阅读次数:
188
01.计数排序、桶排序与基数排序 并不是所有的排序 都是基于比较的,计数排序和基数排序就不是。基于比较排序的排序方法,其复杂度无法突破$n\log{n}$ 的下限,但是 计数排序 桶排序 和基数排序是分布排序,他们是可以突破这个下限达到O(n)的的复杂度的 。 1. 计数排序 概念 计数排序是一种稳 ...
分类:
编程语言 时间:
2018-09-16 15:49:47
阅读次数:
184
Given an unsorted integer array, find the smallest missing positive integer.Example 1:Input: [1,2,0]Output: 3Example 2:Input: [3,4,-1,1]Output: 2Examp ...
分类:
其他好文 时间:
2018-09-16 12:23:58
阅读次数:
137
这是本人的第一篇随笔,为的是分享学习经验,和大家讨论一些算法,以便取得些许进步,也是对学习的总结。 话不多说,下面我会用图文的方式向各位介绍桶排序。 1、主要思想: 桶排序的大体思路就是先将数组分到有限个桶中,再对每个桶中的数据进行排序,可以说是鸽巢排序的一种归纳结果(对每个桶中数据的排序可以是桶排 ...
分类:
编程语言 时间:
2018-08-11 21:58:48
阅读次数:
175
题目 解析: C++ // 第20节 相邻两数最大差值练习题 // 基于桶排序的思想完成,不考虑两个相同的桶内的差值,只考虑该桶的最小值减去上一个桶的最大值,最大的就是最大值。 class Gap { public: int maxGap(vector A, int n) { // write co ...
分类:
编程语言 时间:
2018-08-10 01:31:14
阅读次数:
164
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
选择排序,冒泡排序,快速排序,归并排序,插入排序,希尔排序,计数排序,桶排序,基数排序 以上是一些常用的排序算法。 选择排序 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
这是三种线性时间复杂度的排序算法,它们是用运算而不是比较来确定排序顺序的 一、基数排序 1.简介 它一种与其他排序算法完全不同的排序方法,其他的排序算法都是通过关键字之间的比较和移动来完成的,而它是采用一种多关键字的思想。 多关键字的思想:给定一组数据,我可以先按个位的大小对所有数进行排序,然后再按 ...
分类:
编程语言 时间:
2018-07-16 11:15:26
阅读次数:
202