发布网友 发布时间:2022-05-01 19:08
共2个回答
热心网友 时间:2022-05-22 02:53
那个堆排序的算法不需要写。热心网友 时间:2022-05-22 04:11
记得上次去百度面试让我现场写了堆排序,堆排序其实真心很简单,代码非常简洁,比桶排序基数排序什么的都还要容易写,你不妨从以下几个角度理解1.使用数组表示完全二叉树的方法,如何访问父节点,访问子节点,如何判断叶子2. 理解sift-up和sift-down两个操作,其实就是不断的向上或者向下比较并交换,直到根节点或者叶子节点。3.建堆其实只需要n/2次sift-down或者sift-up操作即可4.排序其实就是把堆顶元素移到最终位置,并把堆大小减1,然后sift-up或者sift-down就可以了。耐着点性子去理解算法,其实建堆和堆的调整的相关操作是贪心算法的重要的一个工具,如果不懂堆,如何写出贪心类算法?贪心是各种算法题目的一个基础类型,比如霍夫曼编码其实就是贪心算法,肯定是要会写的。试着从算法设计思想的角度去理解算法,才能吃透。 查看原帖>>