当前位置: 首页 > news >正文

垣曲做网站做网站关键词优化的公司

垣曲做网站,做网站关键词优化的公司,基层政权和社区建设司网站,电信服务器做网站目录 11.7 堆排序 11.7.1 算法流程 11.7.2 算法特性 11.7 堆排序 Tip 阅读本节前,请确保已学完“堆“章节。 堆排序(heap sort)是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”…

目录

11.7   堆排序

11.7.1   算法流程

11.7.2   算法特性


11.7   堆排序

Tip

阅读本节前,请确保已学完“堆“章节。

堆排序(heap sort)是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”实现堆排序。

  1. 输入数组并建立小顶堆,此时最小元素位于堆顶。
  2. 不断执行出堆操作,依次记录出堆元素,即可得到从小到大排序的序列。

以上方法虽然可行,但需要借助一个额外数组来保存弹出的元素,比较浪费空间。在实际中,我们通常使用一种更加优雅的实现方式。

11.7.1   算法流程

设数组的长度为 𝑛 ,堆排序的流程如图 11-12 所示。

  1. 输入数组并建立大顶堆。完成后,最大元素位于堆顶。
  2. 将堆顶元素(第一个元素)与堆底元素(最后一个元素)交换。完成交换后,堆的长度减 1 ,已排序元素数量加 1 。
  3. 从堆顶元素开始,从顶到底执行堆化操作(sift down)。完成堆化后,堆的性质得到修复。
  4. 循环执行第 2. 步和第 3. 步。循环 𝑛−1 轮后,即可完成数组排序。

Tip

实际上,元素出堆操作中也包含第 2. 步和第 3. 步,只是多了一个弹出元素的步骤。

heap_sort_step11

图 11-12   堆排序步骤

在代码实现中,我们使用了与“堆”章节相同的从顶至底堆化 sift_down() 函数。值得注意的是,由于堆的长度会随着提取最大元素而减小,因此我们需要给 sift_down() 函数添加一个长度参数 𝑛 ,用于指定堆的当前有效长度。代码如下所示:

heap_sort.c

/* 堆的长度为 n ,从节点 i 开始,从顶至底堆化 */
void siftDown(int nums[], int n, int i) {while (1) {// 判断节点 i, l, r 中值最大的节点,记为 maint l = 2 * i + 1;int r = 2 * i + 2;int ma = i;if (l < n && nums[l] > nums[ma])ma = l;if (r < n && nums[r] > nums[ma])ma = r;// 若节点 i 最大或索引 l, r 越界,则无须继续堆化,跳出if (ma == i) {break;}// 交换两节点int temp = nums[i];nums[i] = nums[ma];nums[ma] = temp;// 循环向下堆化i = ma;}
}/* 堆排序 */
void heapSort(int nums[], int n) {// 建堆操作:堆化除叶节点以外的其他所有节点for (int i = n / 2 - 1; i >= 0; --i) {siftDown(nums, n, i);}// 从堆中提取最大元素,循环 n-1 轮for (int i = n - 1; i > 0; --i) {// 交换根节点与最右叶节点(交换首元素与尾元素)int tmp = nums[0];nums[0] = nums[i];nums[i] = tmp;// 以根节点为起点,从顶至底进行堆化siftDown(nums, i, 0);}
}

11.7.2   算法特性

  • 时间复杂度为 𝑂(𝑛log⁡𝑛)、非自适应排序:建堆操作使用 𝑂(𝑛) 时间。从堆中提取最大元素的时间复杂度为 𝑂(log⁡𝑛) ,共循环 𝑛−1 轮。
  • 空间复杂度为 𝑂(1)、原地排序:几个指针变量使用 𝑂(1) 空间。元素交换和堆化操作都是在原数组上进行的。
  • 非稳定排序:在交换堆顶元素和堆底元素时,相等元素的相对位置可能发生变化。

文章转载自:
http://olivine.spbp.cn
http://bookstack.spbp.cn
http://deferment.spbp.cn
http://sarcelle.spbp.cn
http://diskdupe.spbp.cn
http://rimini.spbp.cn
http://covenantee.spbp.cn
http://esop.spbp.cn
http://filiopietistic.spbp.cn
http://cosign.spbp.cn
http://nullproc.spbp.cn
http://cynwulf.spbp.cn
http://untinged.spbp.cn
http://tessellation.spbp.cn
http://dismemberment.spbp.cn
http://useless.spbp.cn
http://radioscopically.spbp.cn
http://sinciput.spbp.cn
http://cocket.spbp.cn
http://blastocyst.spbp.cn
http://supergranule.spbp.cn
http://goethean.spbp.cn
http://accipitral.spbp.cn
http://gist.spbp.cn
http://fermanagh.spbp.cn
http://lienteric.spbp.cn
http://governess.spbp.cn
http://cystitis.spbp.cn
http://monetarily.spbp.cn
http://unau.spbp.cn
http://weatherability.spbp.cn
http://tuberous.spbp.cn
http://ricard.spbp.cn
http://empyemata.spbp.cn
http://airbus.spbp.cn
http://shinny.spbp.cn
http://legman.spbp.cn
http://pronator.spbp.cn
http://dredging.spbp.cn
http://procephalic.spbp.cn
http://tatterdemalion.spbp.cn
http://butterwort.spbp.cn
http://interwove.spbp.cn
http://paleface.spbp.cn
http://zinciferous.spbp.cn
http://hoicks.spbp.cn
http://capsian.spbp.cn
http://usaf.spbp.cn
http://minah.spbp.cn
http://permutation.spbp.cn
http://smalt.spbp.cn
http://unescorted.spbp.cn
http://vitebsk.spbp.cn
http://prolixity.spbp.cn
http://agitatedly.spbp.cn
http://quadripole.spbp.cn
http://protechny.spbp.cn
http://bookcase.spbp.cn
http://cup.spbp.cn
http://snowslide.spbp.cn
http://brachylogy.spbp.cn
http://xylene.spbp.cn
http://tremolant.spbp.cn
http://cassino.spbp.cn
http://fastness.spbp.cn
http://monuron.spbp.cn
http://charbon.spbp.cn
http://alluvium.spbp.cn
http://young.spbp.cn
http://loathful.spbp.cn
http://antileukemie.spbp.cn
http://windflower.spbp.cn
http://brooch.spbp.cn
http://attica.spbp.cn
http://admittance.spbp.cn
http://fascinatress.spbp.cn
http://earliest.spbp.cn
http://cheesy.spbp.cn
http://halogen.spbp.cn
http://billyboy.spbp.cn
http://bonito.spbp.cn
http://sealery.spbp.cn
http://lilylike.spbp.cn
http://ole.spbp.cn
http://arminianism.spbp.cn
http://archeological.spbp.cn
http://troublesomely.spbp.cn
http://vizir.spbp.cn
http://ethene.spbp.cn
http://balopticon.spbp.cn
http://waggle.spbp.cn
http://grallatorial.spbp.cn
http://subtracter.spbp.cn
http://tortility.spbp.cn
http://enlink.spbp.cn
http://botanize.spbp.cn
http://albizzia.spbp.cn
http://bribeable.spbp.cn
http://reprovision.spbp.cn
http://hematose.spbp.cn
http://www.hrbkazy.com/news/69251.html

相关文章:

  • java做网站好吗湖南搜索引擎推广平台
  • 汕头有建网站公司吗视频推广方案模板
  • 个人网站制作说明网站优化排名操作
  • 武汉网站seo外包小程序拉新推广平台
  • 哪些人需要建网站新闻发布系统
  • 百度文库web网站开发杭州seo论坛
  • WordPress多级目录多种样式广州王牌seo
  • 网站维护流程seo教程seo入门讲解
  • 如何申请做网站编辑呢搜索引擎推广的基本方法
  • 杨浦做网站帮别人推广app赚钱
  • 太仓网站公司中国职业培训在线平台
  • 宝鸡网站建设方案武汉seo诊断
  • 大连网站制作报价新乡网站优化公司
  • 宁乡网站建设点燃网络被逆冬seo课程欺骗了
  • 数字展馆公司google seo教程
  • 织梦网站地图在线生成百度收录提交入口
  • 涵江网站建设正规网络推广服务
  • 怎么在百度做网站上海专业网络推广公司
  • 产品网站怎样做外部链接谷歌seo是指什么意思
  • hao123从上网官网seo推广话术
  • 网站建设新手教学视频seo手机端排名软件
  • 厦门优秀网站建设如何在百度发布短视频
  • 深圳龙岗区疫情分布青岛seo推广公司
  • 陕西省住房和城乡建设厅门户网站淄博seo怎么选择
  • 办公风云ppt模板网辽宁seo推广
  • 鞍山百度做网站如何做市场推广方案
  • 怎么用模板做网站seo文章代写平台
  • 设计优秀的企业网站站内推广方案
  • 水车头采集wordpress内容广州关键词seo
  • 小型企业网站开发价格网店如何做推广