定义 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 原理 第一 ...
分类:
编程语言 时间:
2019-09-05 23:01:14
阅读次数:
135
1.简述 快速排序是一种排序执行效率很高的排序算法,它利用分治法来对待排序序列进行分治排序,它的思想主要是通过一趟排序将待排记录分隔成独立的两部分,其中的一部分比关键字小,后面一部分比关键字大,然后再对这前后的两部分分别采用这种方式进行排序,通过递归的运算最终达到整个序列有序,下面我们简单进行阐述。 ...
分类:
编程语言 时间:
2019-09-02 19:14:46
阅读次数:
90
数据结构—分块 分块是一种非常好理解、非常好写的数据结构。与其说分块是数据结构,倒不如说它是一种“算法”,甚至是一种“思想”。我个人认为,分块的思想和分治法很像。它们的基本实现方式都可以概括成:将一个大问题拆成若干小问题,最后求解完小问题之后将答案汇总得出大问题的答案。 分块的基本实现是这样的:对于 ...
分类:
其他好文 时间:
2019-08-29 23:31:08
阅读次数:
120
归并排序 package algorithm.sort; / @Auther: AaronPi @Date: 2019 5 6 21:32 归并排序 思想:(分治法 用递归来实现)把数组从中间分成两部分,分别排序,再组合在一起 思路很巧妙,需要尤其注意边界条件、判断剩余元素等事项 / public ...
分类:
编程语言 时间:
2019-08-25 14:13:25
阅读次数:
94
二叉树递归相关题目的时间复杂度基本上都是O(n) = 一共有n个点 + 每个点的时间复杂度(1) 而二叉树分治法最坏的时间复杂度为O(n^2) 时间复杂度:T(n) = 2T(n/2) + O(1) = O(n) Merge Sort, Quick Sort: T(n) = 2T(n/2) + O( ...
分类:
其他好文 时间:
2019-08-20 18:29:33
阅读次数:
90
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想 分治法也确实实用 虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤。因此我的对快速排序作了进一步的说明:挖坑填数+分治法: 基本思想:(分治) 1.先从数列中取出一个 ...
分类:
编程语言 时间:
2019-08-20 14:10:05
阅读次数:
115
搞技术的对“高内聚,低耦合”这几个字应该很熟悉,这是程序设计的一个基本原则,无论对于分布式系统,有几个模块的单体程序,以及程序中具体的类、类中的方法,都可以拿来讲。这个原则本质上是“分治法”,将一个大问题分解为一个个的小问题,然后各个击破,整个问题就解决了。 ...
分类:
其他好文 时间:
2019-08-20 12:57:15
阅读次数:
109
#!/usr/bin/env python # coding: utf-8 code 1 # # 求第k小的数据,分治法 code 2 # # 2个数组,交换一个元素,使得2个数组求和相等 代码: def arrayequal(array1,array2): diff = int((sum(arra... ...
分类:
其他好文 时间:
2019-08-19 19:09:22
阅读次数:
120
归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为O(n·log n)。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。 采用分治法: 分割:递归地把当前序列平均分割成两半。 集成: ...
分类:
编程语言 时间:
2019-08-17 21:55:37
阅读次数:
118
动态规划是很重要的算法。 动态规划的基本思想是:将求解的问题分解成若干个子问题,先求解子问题,然后再从这些子问题的解得到原问题的解。与分治法的区别是,适合用动态规划解决的问题,经分解得到的子问题往往不是相互独立的。动态规划将问题分解成子问题,但是子问题不相互独立,而是彼此依赖,相互提供帮助,很好的利 ...
分类:
编程语言 时间:
2019-08-13 22:50:14
阅读次数:
136