主要内容: 堆、最大堆、最小堆的基本概念 堆的操作:调整、创建、排序 采用堆实现优先级队列
基本概念 堆(heap)亦被称为:优先队列(priority queue) 逻辑定义:
n个元素序列{k1,k2...ki...kn},当且仅当满足下列关系时称之为堆: (ki = k2i,ki >= k2i...
分类:
其他好文 时间:
2014-05-19 08:45:41
阅读次数:
264
void quickSort(int *a1 , int *a2){ int i=0 ,
j=a2-a1-1; if (i>=j) return; swap(a1[0] , a1[rand()%j+1]); while( ia1[0])
--j; if(i<j)...
分类:
其他好文 时间:
2014-05-19 07:43:47
阅读次数:
213
Labyrinth
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 519 Accepted Submission(s): 174
Problem Description
度度熊是一只喜欢探险的熊,一次偶然落...
分类:
其他好文 时间:
2014-05-18 16:04:51
阅读次数:
304
题目:
链接:点击打开链接
算法:
完全背包。
状态转移方程: dp[j] += dp[j-i];dp[j]表示钱j可以兑换的方法,,,,,i是硬币的价值1,2,3,,,个数是不限的
代码:
#include
#include
#include
using namespace std;
int dp[40000];
int n;
int main(...
分类:
其他好文 时间:
2014-05-18 15:43:08
阅读次数:
265
能使用STL的sort系列算法的前提是容器的迭代器必须为随机迭代器。所以,vector和deque天然适用。STL的sort算法采用了一些策略,在不同情况下采用不同的排序算法,以达到各种算法优势互补的效果。基本的原则是:数据量大时采用快速排序,数据量小时采用插入排序(这是对快排常用的一种优化策略),递归层次过深改用堆排序。
首先是插入排序。它的平均和最坏时间复杂度都为O(N²),量级小于...
分类:
其他好文 时间:
2014-05-18 14:40:31
阅读次数:
241
简介:
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)...
分类:
其他好文 时间:
2014-05-16 01:35:14
阅读次数:
397
/**
* 需求:堆排序的实现
* 知识储备:
* 满二叉树:除叶子结点外的所有结点均有两个子结点,所有叶子结点必须在同一层上。
* 完全二叉树:
* 若二叉树的深度为h,除第h层外,其它各层(1~h-1)的节点数都达到最大个数,第h层所有结点都连续集中在最左边。
* 完全二叉树是有满二叉树而引出来的,对于深度为K的,有N个结点的二叉树,当且仅当每一个结点都与深度为K的满二叉树中编号从...
分类:
其他好文 时间:
2014-05-15 23:48:56
阅读次数:
477
适配器模式
现有一个接口DataOperation定义了排序方法sort(int[]) 和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch 的binarySearch(int[], int)方法实现了二分查找算法。现使用适配器模式设计一个系统,在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到DataOperation接口中。绘制类图并编程实现。 (要求实现快速排序和...
分类:
编程语言 时间:
2014-05-15 23:07:47
阅读次数:
423