![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
文章平均质量分 80
一杯星巴克的生活
人生如程序,不是选择就是循环。
展开
-
必会的排序算法及代码实现
插入排序(增量策略):算法复杂度为O(n^2)插入排序的核心在于,它把一个无序数列看成两个数列,假如第一个元素构成了第一个数列,那么余下的元素构成了第二个数列,很显然,第一个数列是有序的,那么我们把第二个数列的第一个元素拿出来从右向左依次和第一个数列的数比较,遇到比自己大的就交换,比自己小的就插入到第一个数列,使它依然构成一个有序数列,直到第二个数列中的所有元素全部插入到第一个数列,这时候就排好序了。lst=[5,7,1,3,6,2,4]def insertSort(arr): for原创 2021-07-22 14:15:14 · 204 阅读 · 0 评论 -
快速排序、归并排序
下面介绍两个时间复杂度都是 O(nlogn) 的排序算法。快速排序(分治策略)令 l,r 分别代表序列最小下标值和最大下标值让这两个指针一个从左往右,一个从右往左,分别查找,当 l < r 开始循环:1.当右边数 arr[r]大于基准数,就 r-- 继续向左查找,如果找到比基准数小就与arr[l]交换位置2.当左边数 arr[l]小于基准数,就 r++ 继续向左查找,如果找到比基准数大就与arr[r]交换位置3.当l = r 即左右下标指向同一个数说明序列已经遍历一遍,这个位置就是一个分界原创 2020-08-03 10:45:15 · 125 阅读 · 0 评论