在一张纸上并排画 11 个小方格。叫你的好朋友背对着你(确保你看不到他在纸上写什么),在前两个方格中随便填两个 1 到 10 之间的数。从第三个方格开始,在每个方格里填入前两个方格里的数之和。让你的朋友一直算出第 10 个方格里的数。假如你的朋友一开始填入方格的数是 7 和 3 ,那么前 10 个方...
分类:
其他好文 时间:
2014-08-13 21:36:37
阅读次数:
241
0 1 2 3 4 5 6 7 8 //下标
{ 9 , 4 , 3 , 7 , 3 , 8 , 2 , 4 , 8 }//通过mergesort函数递归 来切 开始的时候fir=0, las=8, mid=4 所以下标0-4,分为前组 5-8分为后组
{ 9 , 4 , 3 , 7 , 3 }{ 8 , 2 , 4 , 8 }
{ 9 , 4 , 3 }{...
分类:
其他好文 时间:
2014-08-13 19:00:47
阅读次数:
160
经典排序算法总结(代码)·冒泡法·快速排序·插入排序·希尔(shell)排序·选择排序·堆排序·归并排序附:排序算法原理:http://zh.wikipedia.org/wiki/Category:%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95flash演示:http://...
分类:
其他好文 时间:
2014-08-13 17:43:06
阅读次数:
257
代码实现 #include "stdafx.h"#include #include using namespace std;int a[1...
分类:
编程语言 时间:
2014-08-12 21:39:44
阅读次数:
249
在面对大数据量的排序时(100W以上量级数据),通常用以下三种的排序方法:快速排序、归并排序,堆排序。在这个量级上,其他冒泡,选择,插入排序等已经根本没法看了,效率极低,跟前面三种排序差了千百倍,因此不作比较。这三种排序的平均时间复杂度均为O(nlogn),快速排序,归并排序在面对基本有序序列排序时...
分类:
编程语言 时间:
2014-08-12 21:36:44
阅读次数:
286
Insertion Sort is a simple sorting technique which was covered in previous challenges. Sometimes, arrays may be too large for us to wait around for in...
分类:
其他好文 时间:
2014-08-12 18:13:14
阅读次数:
404
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
其他好文 时间:
2014-08-12 16:28:54
阅读次数:
136
Problem:
Sort a linked list in O(n log n)
time using constant space complexity.
解题思路:
首先,时间复杂度能达到O(nlgn)的排序算法,常见的有3种:堆排序、归并排序和快速排序,
而对于链表,用堆排序显然不太可能,所以,我们可用归并或者是快排.由于合并...
分类:
其他好文 时间:
2014-08-12 00:45:13
阅读次数:
217
归并排序的原理:如果数组的元素个数大于1,则: 将数组平均分为两部分; 左边的数组归并排序;递归 右边的数组归并排序;递归 将两个各自有序的数组合并,需要一个额外的辅助数组,暂时保存合并结果;返回否则,数组元素个数为1时,已经有序;直接返回。稳定排序。时间复杂度在最坏、最好、平均情况下都为O...
分类:
其他好文 时间:
2014-08-12 00:27:53
阅读次数:
223
二路归并排序的时间复杂度是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