排序算法
Jock2018
珞珈学子,公众号“每日学一技”。
展开
-
Python3 实现选择排序和插入排序
Python3 实现选择排序和插入排序一、选择排序的实现原理思路代码实现小结二、插入排序实现原理思路代码实现小结一、选择排序的实现原理思路对给定的一组数据,经过第一轮依次比较,找到最小的那个数,然后把最小的那个数和第一个数交换;然后继续对不包括第一个数的剩余的数进行第二轮依次比较,找到最小的那个数,然后和第二个数进行交换;以此类推,直至进行比较的数只剩一个停止。代码实现def s...原创 2019-04-24 09:10:52 · 371 阅读 · 0 评论 -
Python3 实现冒泡排序和归并排序
Python3实现冒泡排序和归并排序一、冒泡排序的实现原理思路代码实现小结二、归并排序实现原理思路代码实现小结项目地址一、冒泡排序的实现原理思路就像气泡上升一样,相邻两个数依次两两比较,如果左边的比右边的大,则交换位置。对给定的一组数据,从第一个数开始,依次对相邻的两个数进行比较,如果左边的数大于右边的数,则交换他们的位置,第一轮过后,最大的那个数位于最后;然后继续对不包括最后一个数的...原创 2019-04-25 10:34:26 · 449 阅读 · 0 评论 -
Python3实现快速排序
Python3实现快速排序原理思路代码实现通用版本实战中的版本Pythonic版本小结项目地址原理思路快速排序也是分而治之思想的典范,通过递归解决问题。思路:1. 找到简单的基线条件(递归出口);2. 确定如何缩小问题的规模,使其符合基线条件。详细的原理可以参考 这篇文章坐在马桶上看算法:快速排序步骤归纳:排序数组为collection,游标left从a的最左边开始,游标right从最...原创 2019-05-05 19:23:09 · 1716 阅读 · 0 评论 -
Python3实现希尔排序
Python3实现希尔排序原理思路代码实现普通版本优化后的版本小结项目地址原理思路希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序的实质就是分组插入排序。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再...原创 2019-05-07 10:20:00 · 592 阅读 · 0 评论 -
【08】排序(上):为什么插入排序比冒泡排序更受欢迎?
08排序(上):为什么插入排序比冒泡排序更受欢迎?1. 排序方法与复杂度归类2. 如何分析一个“排序算法”?3. 冒泡排序3.1. 排序原理3.2. 代码实现(Python)3.3. 性能分析4. 有序度&无序度&满有序度5. 插入排序5.1. 插入排序原理5.2. 代码实现5.3. 性能分析6. 选择排序6.1. 选择排序原理6.2 代码实现6.3 选择排序性能分析7. 思考8....原创 2019-10-06 12:17:44 · 1794 阅读 · 1 评论 -
【10】 线性排序:如何根据年龄给100万用户数据排序?
【10】 线性排序:如何根据年龄给100万用户数据排序?1. 线性排序算法介绍2. 桶排序(Bucket sort)3. 计数排序(Counting sort)4. 基数排序(Radix sort)5. 思考6. 参考资料7. 声明1. 线性排序算法介绍线性排序算法包括桶排序、计数排序、基数排序。线性排序算法的时间复杂度为O(n)。此3种排序算法都不涉及元素之间的比较操作,是非基于比较的...原创 2019-10-06 22:20:02 · 361 阅读 · 0 评论 -
【11】 排序优化:如何实现一个通用的、高性能的排序函数?
11 排序优化:如何实现一个通用的、高性能的排序函数?1. 如何选择合适的排序算法?2. 如何优化快速排序?3. 通用排序函数实现技巧4. 思考5. 参考资料6. 声明1. 如何选择合适的排序算法?排序算法一览表排序算法时间复杂度是否稳定排序是否原地排序冒泡排序O(n^2)是是插入排序O(n^2)是是选择排序O(n^2)否是快速...原创 2019-10-06 23:21:15 · 434 阅读 · 0 评论