python排序算法
Z_阳
Every cloud has a silver lining
展开
-
python中各个常见排序算法的时间复杂度、空间复杂度的归纳总结
排序算法平均时间复杂度最坏时间复杂度空间复杂度稳定排序冒泡排序O(n^2)O(n^2)O(1)稳定鸡尾酒排序O(n^2)O(n^2)O(1)稳定快速排序O(nlogn)O(n^2)O(logn)不稳定堆排序O(nlogn)O(nlogn)O(1)不稳定计数排序O(n+m)O(n+m)O(n)稳定桶排序O(n)O(nlogn)O(n)稳定...原创 2020-07-21 16:46:04 · 418 阅读 · 0 评论 -
python排序算法-巧妙的实现桶排序的原理详细解释以及步骤说明
介绍桶排序,实际上是用二维数组实现的排序算法,它和计数排序一样也是线性时间的排序算法,它里面的桶就像上一篇文章里面计数排序中用到的count_list一样,只不过在桶排序当中我需要建立很多个count_list来辅助我的数据处理那桶排序当中的桶(bucket)到底是什么意思?每一个桶,都是一个有一定范围的一维数组,里面可以承载多个元素举个例子,比如生成一个随机小数位的浮点数[4.712924, 8.34, 2.341, 8.584, 0.061, 9.541, 2.791, 5.4803]接下来原创 2020-07-21 16:18:59 · 333 阅读 · 0 评论 -
python排序算法-计数排序简单实现以及相应的优化
什么是计数排序字面意思理解就是将序列当中的元素出现的个数进行记录,然后再进行排序,原创 2020-07-16 00:01:39 · 301 阅读 · 0 评论 -
python之快速排序-QuickSort
介绍快速排序同冒泡排序一样,也是属于交换排序,通过比较并交换元素位置来达到排序的最终效果但不同的是,冒泡排序只是把其中选择出来的1个元素交换到数列的一侧快速排序是在每一轮的交换比较过程中,每次选择一个基准元素,把数列当中比基准元素大的元素移动到它的一侧,比基准元素小的元素移动到它的另外一侧,循环往复最终排好顺序快速排序总体的平均时间复杂度是在O(nlogn)...原创 2020-07-02 22:44:28 · 1342 阅读 · 0 评论 -
python之鸡尾酒排序-cocktailSort
鸡尾酒排序鸡尾酒排序是在冒泡排序上的基础上,进行的一次升级。冒泡排序只是单一方向的进行遍历,而鸡尾酒排序的比较和交换是双向进行,这样大大提升了效率。原理举一个简单的列表:[24, 12, 2, 3, 20, 44, 5, 48, 10, 22] 第一轮的时候,整体遍历从左向右第一次[24, 12, 2, 3, 20, 44, 5, 48, 10, 22][ 12,24, 2, 3, 20, 44, 5, 48, 10, 22] 第二次[12, 24, 2, 3, 20, 44, 5,原创 2020-06-30 16:57:45 · 385 阅读 · 0 评论 -
使用Python对冒泡排序的再次优化(python-the re-optimization of bubble sort )
冒泡排序性能再次优化之前的优化是在原有普通的冒泡排序的基础上,加入排序标记,如果检查相邻元素之后发现并没有发生元素顺序的调换,那么则可以看做已经排好序了,直接退出,进行下次循环虽然效果已经比之前普通的冒泡排序要好很多,但是性能还是可以再做优化,尤其是在处理一些前半部分是无序,但是后半部分是有序的情况下,冒泡排序还会再去比较一次,这样其实是比较浪费的。举个例子,比如[10,2,-4,7,3,11,9,13,14,15,16,17,18]这个列表的前半部分是无序的,但是后半部分实际上已经是有序了的,第原创 2020-06-30 10:59:19 · 234 阅读 · 0 评论 -
python排序之Bubble_Sort实现及相应优化,使用matplotlib进行不同规模数组所耗时间的可视化对比
冒泡排序描述重复列表进行排序,比较每对相邻的项目,如果他们的顺序错误,则进行交换在完成每一趟的排序时,最大元素已被‘冒泡’到数列末端的合适位置重复列表,直到不需要交换,这表明列表已被排序一、模块准备1、前期准备为了让程序更加的灵活,在准备数据样本时我采用随机数的形式,可以让程序根据自己想要生成的规模及随机范围进行数组的生成,这样更具一般性,加入时间模块和matplotlib进行可视化比对import randomimport timeimport matplotlib.pyplot as原创 2020-06-22 22:31:34 · 408 阅读 · 0 评论