- 博客(6)
- 收藏
- 关注
原创 线性时间排序(计数、基数、桶排序)
线性时间排序1.计数排序原理:计数排序是一种稳定的排序算法,但适用范围相对来说具有一定的局限性。当数据之间的差值太大,消耗的计算机资源相对来说太大,则不适合于用计数排序。在适合的数据面前,其排序的时间复杂度的是非常小的,运行时间为Θ(n)。基本思想:对于每一个输入元素x,确定小于x的元素个数。以此来确定x的输出位置,例如:小于x的元素有15个,则第16号输出元素就是x。当有几个元素相同时,将方案略作修改,因为不能将其放在同一输出位置上。代码:#计数排序代码def CountingSort(a
2021-11-30 16:29:46
125
原创 计数排序python
计数排序计数排序是一种稳定的排序算法,但适用范围相对来说具有一定的局限性。当数据之间的差值太大,消耗的计算机资源相对来说太大,则不适合于用计数排序。在适合的数据面前,其排序的时间复杂度的是非常小的,运行时间为Θ(n)。基本思想:对于每一个输入元素x,确定小于x的元素个数。以此来确定x的输出位置,例如:小于x的元素有15个,则第16号输出元素就是x。当有几个元素相同时,将方案略作修改,因为不能将其放在同一输出位置上。代码:#计数排序代码def CountingSort(a, b, k): c=
2021-11-26 10:21:01
868
原创 堆排序python
堆排序堆排序是一个近似完全二叉树的结构,利用堆这种数据结构所设计而成的一种排序算法。堆操作:在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆中的最小值位于根节点)。堆中定义以下几种操作:最大堆调整(swap):将堆的末端子节点作调整,使子节点小于父节点创建最大堆(adjust_heap):将堆中的所有数据重新进行排序堆排序(heap_sort):移除位在第一个数据的根节点,并做最大堆调整的递归运算下面为堆排序操作示例图:#堆排序代码def swap(data, ro
2021-11-24 10:18:33
475
原创 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
1116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人