摘要:数据结构大学教程 the complete data structure training course 第一章 数据结构及其基本概念 chapter 1 data structure and it’s basic concepts1.1什么是数据结构(what is data structure) 如果你问一个木匠学徒:你工作的工具要用什么,他可能会回答你:“我只要一把锤......
摘要: 倘若你去问一个木匠学徒:你需要什么样的工具进行工作,他可能会回答你:“我只要一把锤子和一个锯”。但是如果你去问一个老木工或者是大师级的建筑师,他会告诉你“我需要一些精确的工具”。由于计算机所解决的问题都是从生活中抽象出来的问题,其复杂性不言而喻,所以我们需要这样精确有效的工具去解决现实生活中的复杂问题。算法、数据结构都是程序设计中必不可少的精确工具......
组合算法概论(2)堆排序也是选择排序的一种,其特点是,在以后各趟的“选择”中利用在第一趟选择中已经得到的关键字比较的结果. 堆的定义: 【程序编程相关:
由励志书籍的泛滥和良莠不齐想到的】 【推荐阅读:
日期转换】堆是满足下列性质的数列{r1, r2, …,rn}: 【扩展信息:
VB中常用的数据类型和C#中数据类型的对】 或 若将此数列看成是一棵完全二叉树,则堆或是空树或是满足下列特性的完全二叉树:其左.右子树分别是堆,并且当左/右子树不空时,根结点的值小于(或大于)左/右子树根结点的值. 由此,若上述数列是堆,则r1必是数列中的最小值或最大值,分别称作小顶堆或大顶堆. 堆排序即是利用堆的特性对记录序列进行排序的一种排序方法.具体作法是:先建一个“大顶堆”,即先选得一个关键字为最大的记录,然后与序列中最后一个记录交换,之后继续对序列中前n-1记录进行“筛选”,重新将它调整为一个“大顶堆”,再将堆顶记录与第n-1个记录交换,如此反复直至排序结束. 所谓“筛选”指的是,对一棵左/右子树均为堆的完全二叉树,“调整”根结点使整个二叉树为堆. 堆排序的算法如下所示: template void heapsort ( elem r[], int n ) { // 对记录序列r[1..n]进行堆排序. for ( i=n/2; i>0; --i ) // 把r[1..n]建成大顶堆 heapadjust ( r, i, n ); for ( i=n; i>1; --i ) { r[1]←→r; // 将堆顶记录与当前未经排序子序列 // r[1..i]中最后一个记录相互交换 heapadjust(r, 1, i-1); // 将r[1..i-1] 重新调整为大顶堆 } } // heapsort 其中筛选的算法如下所示.为将r[s..m]调整为“大顶堆”,算法中“筛选”应沿关键字较大的孩子结点向下进行. template void heapadjust (elem r[], int s, int m) { ...
下一页 摘要: 又是一个要搞汉语编程的同类
[楼主] 利用失重现象宇航员也许就不会死 acd2366 2003-09-03 03:36:43
--------------------------------------------------------------------------------
在地球上,当飞机高速向下俯冲,达到一定速度时,人就会出现失重现象,飘起来。这也是训练宇航员适应失重一个......