杂谈: 严蔚敏版《数据结构(C语言版)》 一书 终于看完了。这是 一个完结,也是 一个新的开端。《算法导论》 已到手。
置换选择排序的思想 是 将 归并段 尽量 变的 更大,而不是根据 内存 大小 限制在 固定的 大小。 这样 可以 利用赫夫曼树 来 进行 最优归并树,从而 使 外存 读写次数 最少。
下面给出 具体 代码:欢迎指出代码不足。
// Replace_Selcetion.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <climits>
#define M 6//内存一次可容纳的 组数
typedef int LoseTree[M];
typedef struct RcdNode
{
int key;
int rNum;//归并段 的段号
}WorkArea[M+1];//内存工作区域。。。
//假设这些文件 存放在 硬盘中..
static int testArray[] = {10,15,169,3,209,18,20,20,22,40,6,15,25,12,37,48,99,100,INT_MAX};
static int readIndex = 0;//读到的索引位置
static int maxIndex = 18;
//调整 函数
void select_miniMax(LoseTree t,WorkArea wa,int i){
int f = (i + M) / 2;
while (f > 0){
RcdNode n1 = wa[i];
RcdNode n2 = wa[t[f]];
if