- 博客(6)
- 收藏
- 关注
原创 线性时间排序(计数、基数、桶排序)
线性时间排序 1.计数排序 原理: 计数排序是一种稳定的排序算法,但适用范围相对来说具有一定的局限性。当数据之间的差值太大,消耗的计算机资源相对来说太大,则不适合于用计数排序。在适合的数据面前,其排序的时间复杂度的是非常小的,运行时间为Θ(n)。 基本思想: 对于每一个输入元素x,确定小于x的元素个数。以此来确定x的输出位置,例如:小于x的元素有15个,则第16号输出元素就是x。当有几个元素相同时,将方案略作修改,因为不能将其放在同一输出位置上。 代码: #计数排序代码 def CountingSort(a
2021-11-30 16:29:46 118
原创 计数排序python
计数排序 计数排序是一种稳定的排序算法,但适用范围相对来说具有一定的局限性。当数据之间的差值太大,消耗的计算机资源相对来说太大,则不适合于用计数排序。在适合的数据面前,其排序的时间复杂度的是非常小的,运行时间为Θ(n)。 基本思想: 对于每一个输入元素x,确定小于x的元素个数。以此来确定x的输出位置,例如:小于x的元素有15个,则第16号输出元素就是x。当有几个元素相同时,将方案略作修改,因为不能将其放在同一输出位置上。 代码: #计数排序代码 def CountingSort(a, b, k): c=
2021-11-26 10:21:01 853
原创 堆排序python
堆排序 堆排序是一个近似完全二叉树的结构,利用堆这种数据结构所设计而成的一种排序算法。 堆操作: 在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆中的最小值位于根节点)。堆中定义以下几种操作: 最大堆调整(swap):将堆的末端子节点作调整,使子节点小于父节点 创建最大堆(adjust_heap):将堆中的所有数据重新进行排序 堆排序(heap_sort):移除位在第一个数据的根节点,并做最大堆调整的递归运算 下面为堆排序操作示例图: #堆排序代码 def swap(data, ro
2021-11-24 10:18:33 466
原创 python快速排序
快速排序 快速排序是最常用的一种排序算法,包括C的qsort,C++和Java的sort,都采用了快排(C++和Java的sort经过了优化,还混合了其他排序算法)。 快排最坏情况 ????(????2) ,但平均效率 ????(????lg????) ,而且这个 ????(????lg????) 记号中隐含的常数因子很小,快排可以说是最快的排序算法,它还是就地排序。 快速排序是基于分治策略的。对一个子数组A[p…r]快速排序的分治过程的三个步骤为: 1、分解 数组A[p…r]被划分成两个(可能空)
2021-11-22 18:52:08 1099
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人