排序
文章平均质量分 80
一杯星巴克的生活
人生如程序,不是选择就是循环。
展开
-
必会的排序算法及代码实现
插入排序(增量策略):算法复杂度为O(n^2) 插入排序的核心在于,它把一个无序数列看成两个数列,假如第一个元素构成了第一个数列,那么余下的元素构成了第二个数列, 很显然,第一个数列是有序的,那么我们把第二个数列的第一个元素拿出来 从右向左依次和第一个数列的数比较,遇到比自己大的就交换,比自己小的就插入到第一个数列, 使它依然构成一个有序数列,直到第二个数列中的所有元素全部插入到第一个数列,这时候就排好序了。 lst=[5,7,1,3,6,2,4] def insertSort(arr): for原创 2021-07-22 14:15:14 · 164 阅读 · 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 · 107 阅读 · 0 评论