码迷,mamicode.com
首页 >  
搜索关键字:分治策略 c++ 合并排序    ( 404个结果
15个使用频率极高的基础算法题(附完整代码)
合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素 一般来说,合并两个已经有序的数组,首先是开一个能存的下两个数组的第三个数组,但是题目中已经说了,其中一个数组能全部存的下,显然就不应该浪费空间了。 从前往后扫的话,数据要存在大数组的前头,这样每次要把大数组的元素一次后移一位,显然不是什么好主意,所以我们从后往前存。 #include #include...
分类:其他好文   时间:2014-08-23 08:50:40    阅读次数:257
排序算法小结
经典的排序算法有十种,分别是:选择排序、插入排序、希尔排序、冒泡排序、堆排序、合并排序、快速排序、计数排序、基数排序和桶排序。 下面对这些算法分类如下: 选择排序:简单选择排序、堆排序 插入排序:直接插入排序、二分插入排序、希尔排序 快速排序:快速排序、随机化快速排序 线性时间排序:计数排序、基数排序、桶排序 其他:冒泡排序、合并排序 这些排序排序算法的时间复杂度,稳...
分类:其他好文   时间:2014-08-20 16:31:32    阅读次数:185
HDU 4334 Trouble
合并排序再枚举。题意问五个数组中各抽一个加起来 和是否为 0。開始想用 200*200*200 和 200*200 比。果然TLE了。后来知道 得 200*200,200*200 ,200 。先200*200 的枚举,排序,去重。然后三个元素加起来,微调 两个 200*200 的指针。这题用 %ll...
分类:其他好文   时间:2014-08-17 11:42:12    阅读次数:202
【数据结构与算法】二路归并排序
二路归并排序的时间复杂度是O(n*log2n),空间复杂度是O(n)。 代码如下: /** * 源码名称:MergeSort.java * 日期:2014-08-11 * 程序功能:合并排序 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */ public class MergeSort { public void mergeSort(int[]...
分类:其他好文   时间:2014-08-11 17:52:02    阅读次数:204
算法导论 第7章 快速排序
快速排序在最坏情况下的时间复杂度为O(n^2),虽然在最坏情况下运行时间比较差,但是快速排序通常是用于排序的最佳选择,因为其平均性能相当好,期望的运行时间为O(nlgn),且在O(nlgn)的记号中隐含的常数因子很小。 快速排序和合并排序有相似之处,都是需要划分序列,在合并排序中,划分的过程很简单,直接选择元素序列的中间位划分位置,排序是在合并的过程中实现的,所以合并排序的合并过程很重要;相比合...
分类:其他好文   时间:2014-08-10 15:49:50    阅读次数:213
最大和子序列问题
这个问题是算法导论的一个示例,为了讲解分治。 1 //算法导论中的分治策略版本 2 3 4 #include 5 using namespace std; 6 int maxCrossSum(int a[], int begin, int mid, int end) 7 { 8 int ...
分类:其他好文   时间:2014-08-06 01:48:10    阅读次数:195
算法导论 第6章 堆排序
堆数据结构实际上是一种数组对象,是以数组的形式存储的,但是它可以被视为一颗完全二叉树,因此又叫二叉堆。堆分为以下两种类型: 大顶堆:父结点的值不小于其子结点的值,堆顶元素最大 小顶堆:父结点的值不大于其子结点的值,堆顶元素最小 堆排序的时间复杂度跟合并排序一样,都是O(nlgn),但是合并排序不是原地排序(原地排序:在排序过程中,只有常数个元素是保存在数组以外的空间),合并排序的多有元素都被...
分类:其他好文   时间:2014-08-05 22:34:10    阅读次数:232
算法导论 第2章
本章主要是算法知识的基础讲解,介绍了循环不变式,几个简单的排序算法,递归分治算法等内容。 1、循环不变式 循环不变式主要用来说明算法的正确性,那么什么是循环不变式呢,其实就是在循环过程中,一些元素数据必须保持的一些性质,例如在插入排序中,数组为A,必须保证三个性质: (1) 初始化:在循环开始之前,循环不变式是成立的,即:A[0]是有序的,A[1...n-1]是无序的。 (2) 保持:在循...
分类:其他好文   时间:2014-08-05 15:53:01    阅读次数:220
排序算法总结(C语言版)
排序算法总结(C语言版)1. 插入排序1.1 直接插入排序1.2 Shell排序2. 交换排序2.1 冒泡排序2.2 快速排序3. 选择排序3.1 直接选择排序3.2 堆排序4. 归并排序4.1 二路归并排序4.2 自然合并排序5. 分布排序5.1 基数排序1.插入排序1.1 直接插入排序...
分类:编程语言   时间:2014-08-01 23:04:42    阅读次数:349
【从零学习经典算法系列】分治策略实例——快速排序(QuickSort)
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要O(nlogn)次比较。在最坏状况下则需要O(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他O(nlogn)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 此种排序的思路是:如果在分开的时候,不是从中间位置上分界,二是按照元素的大小分开为两个一大一小的子序列(一个子序列的所有元素大于另一个子序列里的所有元素),这样的话,因为两个子序列之间的相对次序已经正确,所有在合并的时候...
分类:其他好文   时间:2014-07-31 16:58:07    阅读次数:299
404条   上一页 1 ... 35 36 37 38 39 ... 41 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!