计数排序 计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 1. 计数排序的特征 当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任... ...
分类:
编程语言 时间:
2019-12-02 23:20:34
阅读次数:
155
基数排序 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 1. 基数排序 vs 计数排序 vs 桶排序 基数排序有两种方法: 这三种排序算法都利用了桶的... ...
分类:
编程语言 时间:
2019-12-02 23:13:05
阅读次数:
77
希尔排序 # 希尔排序 # 希尔排序是对插入排序的升级改造 # 它的大致流程是 # 1、将长度为n的序列 分为d = n//2组 # 2、使每一组变的有序 # 3、将序列分为 d1 = d // 2 组 # 4、将每一组变的有序 # 5、直到最后 d 小于等于 0 def inster_sort_g ...
分类:
编程语言 时间:
2019-12-01 14:07:24
阅读次数:
89
1. 具体题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。 2.思路分析 桶排序,思路同 lee ...
分类:
编程语言 时间:
2019-12-01 11:54:26
阅读次数:
92
数据的排序是在解决实际问题时经常用到的步骤,也是数据结构的考点之一,下面介绍10种经典的排序方法。 首先,排序方法可以大体分为插入排序、选择排序、交换排序、归并排序和桶排序四大类,其中,插入排序又分为直接插入排序、二分插入排序和希尔排序,选择排序分为直接选择排序和堆排序,交换排序分为冒泡排序和快速排 ...
分类:
编程语言 时间:
2019-11-23 21:55:58
阅读次数:
69
原创:微信公众号 帅地 "苦逼的码农" 说明 十大排序算法 可以说是每个程序员都必须得掌握的了,花了一天的时间把代码实现且整理了一下,为了方便大家学习,我把它整理成一篇文章,每种算法会有简单的 算法思想描述 ,为了方便大家理解,我还找来了 动图演示 ;这还不够,我还附上了对应的 优质文章。 术语铺垫 ...
分类:
编程语言 时间:
2019-11-22 23:39:30
阅读次数:
70
一、原理介绍 所谓的基数排序算法,即使对于待排序数据,将其看做数据数位相同的数据。 随后一次依据每个数字个位大小排序,重新排序之后,再根据每一个数字的十位大小排序,依次进行,最后数据就可以达到一个整体有序的状态。 二、实例 对于这样的一系列数据: int arr[15] = { 123, 234, ...
分类:
编程语言 时间:
2019-11-21 11:39:04
阅读次数:
72
十大经典排序算法(python实现)(原创) 使用场景: 1,空间复杂度 越低越好、n值较大: 堆排序 O(nlog2n) O(1) 2,无空间复杂度要求、n值较大: 桶排序 O(n+k) O(n+k) 经典排序算法图解: 经典排序算法的复杂度: 大类一(比较排序法): 1、冒泡排序(Bubble ...
分类:
编程语言 时间:
2019-11-20 21:35:50
阅读次数:
65
一、桶排序算法的引入。 之前我们已经说过了计数排序的算法。 这个时候我们如果有这样的一个待排序数据序列: int x[14]={-10, 2, 3, 7, 20, 23, 25, 40, 41, 43,60, 80, 90, 100}; 我们如果按照计数排序的算法,那么待排序数据的范围是:-10 到 ...
分类:
编程语言 时间:
2019-11-19 00:54:33
阅读次数:
72
冒泡排序细节的讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 选择排序的细节讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 插入排序的细节讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 剖析递归行为和递归行为时间复杂度的估算一个递归行为的例子maste ...
分类:
其他好文 时间:
2019-11-18 18:27:24
阅读次数:
57