带你掌握 4 种 Python 排序算法
摘要:在编程里,排序是一个重要算法,它可以帮助我们更快、更容易地定位数据。在这篇文章中,我们将使用排序算法分类器对我们的数组进行排序,了解它们是如何工作的。
本文分享自华为云社区《Python 排序算法指南》,原文作者:唐里 。
在编程里,排序是一个重要算法,它可以帮助我们更快、更容易地定位数据。在这篇文章中,我们将使用排序算法分类器对我们的数组进行排序,了解它们是如何工作的。为了保障本文的可读性,这里只着重介绍 4 个排序算法。
冒泡排序
插入排序.
归并排序.
快速排序
冒泡排序
冒泡排序是一种简单的排序算法,它比较两个相邻对象的顺序,将非预期顺序的相邻对象位置交换。下面是它的工作步骤:
比较第一个和第二个对象,如果第一个大于第二个,将之交换。
将第二个对象和第三个对象进行比较,检查相同条件。以此类推直到比较到数组最后一个数。
重复执行这个过程,这样数组就按照从左到右从小到大排列了。
图源:维基百科
代码如下
插入排序
插入排序也很简单,它分为已经排序和未排序两部分,将未排序部分的元素选中后正确放置在排序部分即可。类似卡牌游戏时我们手里有分类卡。下面是它的工作步骤:
遍历数组查找最低元素的索引并将其与数组的第一个元素交换。
找到数组(不包括第一个元素)中另一个最低的元素,并将其与第二个元素交换 ,然后重复操作,直到数组的最后一个元素。
这样,数组中最低的元素都会移到左边,而最大的元素会在数组的右边,因此数组是有序的。
图源:维基百科
代码如下
归并排序
归并排序是基于分治算法原理的最常用的排序算法。我们将数组分为多个部分,然后对他们进行排序,最后将子部分合并为一个排序数组,为了更好的理解,下面是它的工作步骤:
把数组分成小块,直到每一块中没有单独的元素。
比较每一块数组,将最小值放在左侧,最大值放在数组的右侧。
如果觉得很难理解,看看这个动图。
图源:维基百科
代码如下
快速排序
与归并排序一样,快速排序也是基于分治算法的原理的一种排序算法。它选择一个元素作为枢轴,并围绕枢轴分区数组。下面是它的工作步骤:
选择一个转折点,这可以是随机选择的。这里假设我们选择数组的最后一个元素作为轴心。
将所有小于轴心的项目放在左侧,大于轴心的项目放在数组右侧。
在枢轴的左右两侧重复上面的步骤。
图源:维基百科
以上就是本文的全部内容,感谢阅读,如果对你有帮助希望点个赞~
原文地址:https://python.plainenglish.io/a-guide-to-sorting-algorithms-in-python-dfa9436b8527
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/67421d56f0dcbd96487cffeee】。文章转载请联系作者。
评论