![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
阿清~
这个作者很懒,什么都没留下…
展开
-
《剑指offer》刷题系列——(六十八)把数组排成最小的数
题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”思路定义一个排序规则,数组根据这个规则排序之后能排成一个最小的数字。要确定排序规则,就要比较两个数字,也就是给出两个数字m和n,我们需要确定一个规则判断哪个应该排在前面。两个数字m和n可以拼接成mn和nm。如果mn<nm,那么我们应该打印mn,也就是m应该排在n前面,此原创 2020-07-26 14:25:22 · 208 阅读 · 0 评论 -
《剑指offer》刷题系列——(七十一)数组中的逆序对
题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5思路暴力法是两个for循环遍历数组,比较数组中的每一对数字,但是会超时。如何减少比较次数?利用归并排序的思想。原数组: [7,5,6,4]一分为二:left = [7,5],right = [6,4]对每个子数组排序:left = [5,7],right = [4,6]归并的过程中寻找逆序对:left中的原创 2020-07-30 17:50:02 · 105 阅读 · 0 评论 -
快速排序python代码
def quick_sort(nums, left, right): if left < right: index = partition(nums, left, right) quick_sort(nums, left, index-1) quick_sort(nums, index+1, right) return numsdef partition(nums, left, right): key = nums[left原创 2020-07-19 15:28:12 · 209 阅读 · 0 评论 -
归并排序python代码
def Merge(left, right): temp = [] i, j = 0, 0 while i < len(left) and j < len(right): if left[i] <= right[j]: temp.append(left[i]) i += 1 else: temp.append(right[j]) j +=原创 2020-07-30 14:37:55 · 548 阅读 · 0 评论