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

高考志愿网站开发ghost vs wordpress

高考志愿网站开发,ghost vs wordpress,凡客装修,为网站网站做网络维护一、堆排序介绍来源百度百科#xff1a;堆排序(Heapsort)是指利用堆积树#xff08;堆#xff09;这种数据结构所设计的一种排序算法#xff0c;它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆#xff0c;是完全二叉树。前面我已经…一、堆排序介绍来源百度百科堆排序(Heapsort)是指利用堆积树堆这种数据结构所设计的一种排序算法它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆是完全二叉树。前面我已经有二叉树入门的文章了当时讲解的是二叉查找树那上面所说的完全二叉树是怎么样的一种二叉树呢还有满二叉树又是怎么的一种二叉树呢甚至还有完满二叉树完全二叉树 除了最后一层之外的其他每一层都被完全填充并且所有结点都保持向左对齐。满二叉树除了叶子结点之外的每一个结点都有两个孩子每一层(当然包含最后一层)都被完全填充。完满二叉树除了叶子结点之外的每一个结点都有两个孩子结点。下面用图来说话完全二叉树(Complete Binary Tree)满二叉树(Perfect Binary Tree)完满二叉树(Full Binary Tree)参考资料www.cnblogs.com/idorax/p/64…简单来说堆排序是将数据看成是完全二叉树、根据完全二叉树的特性来进行排序的一种算法最大堆要求节点的元素都要不小于其孩子最小堆要求节点元素都不大于其左右孩子那么处于最大堆的根节点的元素一定是这个堆中的最大值这里我们讨论最大堆当前每个父节点都大于子节点完全二叉树有个特性左边子节点位置 当前父节点的两倍 1右边子节点位置 当前父节点的两倍 2二、堆排序体验现在我们有一个完全二叉树左子树和右子树都符合最大堆--父子但是我们会发现根元素所在的数并不符合明显的是1是小于7的我们就对其进行交换交换完之后我们会发现右子树又不符合了因为右子树变成了这样最后我们将右子数的最大值也交换到右子树的根元素上于是我们第一次的建堆操作就完成了可以发现的是一次堆建立完之后我们的最大值就在了堆的根节点上随后将堆顶最大值和数组最后的元素进行替换我们就完成了一趟排序了。接下来剩下的数不断进行建堆交换就可以完成我们的堆排序了.........建堆交换....建堆交换...建堆交换...建堆交换..三、堆排序代码实现比较当前父节点是否大于子节点如果大于就交换直到一趟建堆完成/*** 建堆** param arrays 看作是完全二叉树* param currentRootNode 当前父节点位置* param size 节点总数*/public static void heapify(int[] arrays, int currentRootNode, int size) {if (currentRootNode size) {//左子树和右字数的位置int left 2 * currentRootNode 1;int right 2 * currentRootNode 2;//把当前父节点位置看成是最大的int max currentRootNode;if (left size) {//如果比当前根元素要大记录它的位置if (arrays[max] arrays[left]) {max left;}}if (right size) {//如果比当前根元素要大记录它的位置if (arrays[max] arrays[right]) {max right;}}//如果最大的不是根元素位置那么就交换if (max ! currentRootNode) {int temp arrays[max];arrays[max] arrays[currentRootNode];arrays[currentRootNode] temp;//继续比较直到完成一次建堆heapify(arrays, max, size);}}}值得注意的是在上面体验堆排序时我们是左子树和右子数都是已经有父子这么一个条件的了。显然一个普通的数组并不能有这种条件(父子)因此我们往往是从数组最后一个元素来进行建堆/*** 完成一次建堆最大值在堆的顶部(根节点)*/public static void maxHeapify(int[] arrays, int size) {// 从数组的尾部开始直到第一个元素(角标为0)for (int i size - 1; i 0; i--) {heapify(arrays, i, size);}}完成第一次建堆之后我们会发现最大值会在数组的首位接下来不断建堆然后让数组最后一位与当前堆顶(数组第一位)进行交换即可排序for (int i 0; i arrays.length; i) {//每次建堆就可以排除一个元素了maxHeapify(arrays, arrays.length - i);//交换int temp arrays[0];arrays[0] arrays[(arrays.length - 1) - i];arrays[(arrays.length - 1) - i] temp;}四、总结堆排序是比其他排序要难一点他用到了完全二叉树这么一个特性来进行排序代码实现上也比其他排序要复杂一点。参考资料www.cnblogs.com/skywang1234…如果文章有错的地方欢迎指正大家互相交流。习惯在微信看技术文章想要获取更多的Java资源的同学可以关注微信公众号:Java3y
http://www.huolong8.cn/news/373879/

相关文章:

  • 安阳专业做网站公司阿里巴巴建网站
  • 用php做网站用到的工具免费网站后台模板下载
  • 助企建站如何自己做个人微信小程序
  • 罗湖网站建设公司wordpress limit
  • 想学习网站建设wordpress修改描述
  • 做汽车配件的都在那个网站做呀响应式网站头部
  • asp网站设计要求小程序商城哪家好
  • 邯郸的网站建设wordpress出境游
  • 网站建设 大公司小公司四大商业网站
  • 做汽车英文网站网站开发 自定义首页显示
  • 外贸手机网站模板2023年没必要学php了
  • 中国wix网站制作公司专业零基础网站建设教学
  • 保定网站制作方案南京网站微信建设
  • 行业网站建设运营如何制作网页教程
  • 有没有专门做渔具的网站acf wordpress
  • 网站建设全部代码做门户网站代码质量方面具体需要注意什么
  • 网站建设的实践报告南京小程序开发
  • 婚纱摄影建设网站的目的商城网站制作报价
  • wordpress网站佣金推广网站建设培训教程
  • 网络哪里能接活做网站必应网站收录在哪
  • 网站网络拓扑图软件项目管理内容
  • 安溪人做的网站wordpress 二级目录404
  • 企业 网站 客户留言怎么做有专业做网站的吗gre考
  • 公众号开发网站公司个人简历模板免费下载手机版
  • 长沙专业的网站设计广州十大传媒公司
  • 有没有什么免费的网站知名企业网站
  • 建设银行 上海 招聘网站制作图片的软件及特点
  • 做招聘网站的风投淘宝的网站建设怎么建
  • 淘宝实时优惠券网站怎么做的苏州网站维护
  • 2016年网站建设总结建设什么网站赚钱