终于到了经典的快排了,作为20世纪科学和工程领域十大算法之一,自60年代发明以来,一直吸引着一批批工程师和科学家对其改进,今天我们就分析快排算法以及它的几种改进方案。快速排序概述:快速排序算法也是基于分治思想的方案,与归并排序不同的是,它是原地排序,同时可以将长度为N的数组排序所需的时间和NlogN...
分类:
其他好文 时间:
2014-09-29 13:14:30
阅读次数:
181
算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。 1 //将有序数组a[]...
分类:
其他好文 时间:
2014-09-28 14:31:12
阅读次数:
204
归并排序是建立在归并操作上的一种有效的排序算法。该算法是採用分治法(Divide and Conquer)的一个很典型的应用。首先考虑下怎样将将二个有序数列合并。这个很easy,仅仅要从比較二个数列的第一个数,谁小就先取谁,取了后就在相应数列中删除这个数。然后再进行比較,假设有数列为空,那直接将还有...
分类:
其他好文 时间:
2014-09-28 13:10:22
阅读次数:
180
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
其他好文 时间:
2014-09-28 12:59:02
阅读次数:
165
题目描述:Sort a linked list inO(nlogn) time using constant space complexity.解题方案:题目要求的时间复杂度是O(nlogn),常数级空间复杂度。所以这里用了归并排序,归并排序在数组上操作比较方便,但是这里要排序的是链表。我们用到两个...
分类:
其他好文 时间:
2014-09-27 18:56:10
阅读次数:
231
BrainmanTime Limit: 1000 MS Memory Limit: 30000 KB64-bit integer IO format: %I64d , %I64u Java class name: Main[Submit] [Status] [Discuss]DescriptionB...
分类:
其他好文 时间:
2014-09-26 21:51:58
阅读次数:
320
#include#define MAXSIZE 20typedef int KeyType;typedef struct{ KeyType key;}RcdType;typedef struct { RcdType r[MAXSIZE+1]; int length;}Sqlist...
分类:
其他好文 时间:
2014-09-26 21:23:08
阅读次数:
189
课堂笔记:程序执行效率影响因子:输入:评估时使用最坏情况输入输入大小:考虑n渐进∞机器执行效率: 忽略两种排序算法比较插入排序n2归并排序nlgn递归技能1:评估多项式的时间级数θ技能2:构建算法的循环不定式,并证明其正确性引申思考归并排序通过哪个关键步骤/方法使效率高于插入排序编程训练归并排(与逆...
分类:
其他好文 时间:
2014-09-26 20:30:38
阅读次数:
132