摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1425http://acm.hdu.edu.cn/showproblem.php?pid=1425View Code #include <iostream>#include <stdio.h>using namespace std;long heap[1000005];//觉得那个数有点大所以开了长整型void adjust(long start,long n){ long i; long temp;//用来记录当前要交换的值 temp = heap[start]; for( 阅读全文
posted @ 2012-07-21 14:37 某某。 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 堆排序堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。 (1)用大根堆排序的基本思想 ① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 ② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R[1..n-1].keys≤R[n].key ③由于交换后新的根R[1]可能违反堆性质,故应将当前无序区R[1..n-1]调整为堆。然后再次将R[1..n-1]中关键字最大的记录R[1]和该区间的最后一个记录R[n-1]... 阅读全文
posted @ 2012-07-21 14:29 某某。 阅读(248) 评论(0) 推荐(0) 编辑