摘要:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include<stdio.h>#include<stdlib.h>voidShellSort(inta[],intIndex);voidPrintArray(constc...
阅读全文
摘要:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include<stdio.h>#include<stdlib.h>intinitialStep(intsize);voidsort(intarray[],intfrom,i...
阅读全文
摘要:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include<stdio.h>#include<stdlib.h>voidPrintHeap(constchar*strMsg,intarray[],intnLength...
阅读全文
摘要:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include<stdio.h>#include<stdlib.h>voidHeapSort(intnum[],intsize);voidBuildHeap(intnum[...
阅读全文
摘要:Q1.为什么HeapSort在创建初始堆时循环的索引是从n/2开始的A1.因为堆排序的数据存储结构是数组: 若数组的索引从1开始,则若数组元素的个数为n,则以最后一个元素为左子节点的父节点的索引为n/2;依次类推,则以倒数第二个元素为左子节点的父元素的索引为n/2-1,...n/2-n/2-1; 若数组的索引从0开始,则若数组元素的个数为n,则以最后一个元素为左子节点的父节点的索引为n/2-1;依...
阅读全文
摘要:概述:完全二叉树是效率很高的数据结构,堆是一种完全二叉树,所以效率极高,像十分常用的排序算法、Dijkstra算法、Prim算法等都要用堆才能优化,几乎每次都要考到的二叉排序树的效率也要借助平衡性来提高,而平衡性基于完全二叉树。 这是完全二叉树的基本形态,要深深记牢。完全二叉树定义 完全二叉树(Complete Binary Tree) 若设二叉树的高度为h,除第 h 层外,其它各层 (1~...
阅读全文
摘要:堆排序原理及分析 起源 1991年计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(Robert W.Floyd)和威廉姆斯(J.Williams)在1964年共同发明了著名的堆排序算法( Heap Sort ) “堆”定义 n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质): (1) ...
阅读全文
摘要:(当个日记记录Treap这一结构,详细参见http://www.nocow.cn/index.php/Treap, 在这里我着重讲一下旋转) Treap,它其它就是一个二叉查找树(BST)+堆(HEAP). 它的数据有两个:关键值(key),优先级(fix). 用struct表示Treap的结点的结构如下: struct node { datatype key; int fix; node * ...
阅读全文