堆排序算法伪代码 堆排序算法

// 草稿,待完善/////////////////////////////////////////////////////void HeapSort( 数组,元素个数){BuildHeap( 数组,堆大小); // 大小就是包含的元素个数 for(堆元素总个数减一 次循环 ) {将“堆顶”元素同“堆底”元素交换;// 第一个和最后一个RebuildHeap(数组,堆大小减一);//每次都会筛选出一个最大(最小)的元素 } //循环结束后,数组就是有序的}void BuildHeap( 数组,堆大小){ i = 1; for(堆大小减一 次循环 ) {当前节点为数组第 i++ 个元素 ;while( 当前节点值 大于 其父节点值 ){当前节点的父节点作为新的当前节点(注意同时交换数据);if( 当前节点是堆顶 ) break;} }}void RebuildHeap(数组,堆大小){当前节点为堆顶; // 即第一个元素(下标是0)while(1) {if( 当前节点无左子节点) break; //已经到堆底if( 当前节点无右子节点 ){if( 当前节点元素小于左子节点) 当前节点同左子节点交换;break; // 说明当前节点为次地层}确定当前节点、左子节点、右子节点中元素数据最大的一个;if(最大的不是当前节点 ){较大的节点同当前节点交换;较大的节点作为新的当前节点;continue;}break; // 当前节点最大,说明当前位置正合适。 }}/////////////////////////////////////////////////////////

堆排序算法伪代码 堆排序算法
  

爱华网本文地址 » http://www.aihuau.com/a/25101015/278248.html

更多阅读

快速排序-算法导论版本 算法导论 排序网络

快速排序算法和合并排序算法一样,也是基于分治模式。对子数组A[p...r]快速排序的分治过程的三个步骤为:分解:把数组A[p...r]分为A[p...q-1]与A[q+1...r]两部分,其中A[p...q-1]中的每个元素都小于等于A[q]而A[q+1...r]中的每个元素都大于

从小到大排序算法 java从小到大排序

查看文章 10种排序算法总结(冒泡、选择、插入、希尔、归并、快速、堆、拓扑、锦标赛、基数)2011年01月20日星期四 08:24P.M.排序算法有很多,所以在特定情景中使用哪一种算法很重要。为了选择合适的算法,可以按照建议的顺序考虑以下标

基本排序算法比较与选择 二叉排序算法

前几天应一个朋友的要求,帮他完成了数据排序的一个作业。觉得很有给大家参考的价值,所以经过他同意,作了些修改帖了上来。源代码见附件,代码中实现了8种排序算法,各算法名称见下表或见源码。运行程序时,将需要你输入一数值,以确定对多少随

上市公司网址大全按股票代码顺序排序) java按字典顺序排序

上市公司网址大全(按股票代码顺序排序) [原创 2007-02-25 17:10:18] 字号:大 中 小上市公司(按股票代码顺序排序)600000~600100浦发银行(600000)邯郸钢铁(600001)齐鲁石化(600002)东北高速(600003)白云机场(600004)武钢股份(600005)东风汽车(600006)中

声明:《堆排序算法伪代码 堆排序算法》为网友你是王分享!如侵犯到您的合法权益请联系我们删除