基本原理就不做介绍了, 很基础的数据结构课程知识.私下回顾即可,主要学习代码. 1.双指针 https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/description/?utm_source=LCUS&utm_mediu ...
分类:
编程语言 时间:
2020-03-15 13:20:39
阅读次数:
70
描述 归并排序和快速排序都是使用分而治之的思维.归并排序侧重点是最终结果的合并.快速排序的重点则是放在了子问题的分解上面. 代码一 def quick_sort(arr): len_arr = len(arr) if len_arr 参考 "分而治之" "算法设计与分析理论" "Python排序算法 ...
分类:
编程语言 时间:
2020-03-15 11:32:23
阅读次数:
63
解题思路: 1、区分是插入还是归并 1)插入:前段有序,后段与初始序列一致。找到第一个破坏序列有序的下标,再继续下一轮插入排序 2)归并:段内有序,需确定最后归并长度。从归并段为2,4,8...开始找起,看是否每段段内有序,如果其中某段不满足有序,则记下当前归并段长度,再将归并段*2即为下次归并长度 ...
分类:
编程语言 时间:
2020-03-14 17:00:54
阅读次数:
199
凡是高效的排序算法无疑都是采用了分治的策略。我们先来看一下什么是分治的思想: 分治法,字面意思是“分而治之”,就是把一个复杂的问题分成多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并。即,分治法的思想是将原问题拆解成相同或者相似的子问题 ...
分类:
编程语言 时间:
2020-03-13 20:59:38
阅读次数:
59
百度百科: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排 ...
分类:
编程语言 时间:
2020-03-13 01:33:43
阅读次数:
62
""" 归并排序 """ def merge_sort(li): 递归出口 if len(li) == 1: return li 第1步:先分 mid = len(li) // 2 left = li[:mid] right = li[mid:] left_one = merge_sort(left ...
分类:
编程语言 时间:
2020-03-12 14:34:52
阅读次数:
58
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。把长度为n的输入序列分成两个长度为n/2 ...
分类:
编程语言 时间:
2020-03-11 23:21:37
阅读次数:
105
《大话数据结构》内容简介:数据结构介绍、算法推导大O阶的方法;顺序结构与链式结构差异、栈与队列的应用;串的朴素模式匹配、KMP模式匹配算法;二叉树前中后序遍历、赫夫曼树及应用;图的深度、广度遍历;最小生成树两种算法、最短路径两种算法;拓扑排序与关键路径算法;折半查找、插值查找、斐波那契查找等静态查找 ...
分类:
其他好文 时间:
2020-03-10 21:29:34
阅读次数:
67
用类似归并排序的思想对两个凸包进行合并,合并完以后再求一次凸包 以下代码因使用浮点误差巨大 ...
分类:
其他好文 时间:
2020-03-10 14:14:36
阅读次数:
72
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字数据范围: 对于%50的数据,size ...
分类:
编程语言 时间:
2020-03-09 17:39:50
阅读次数:
66