美文网首页
堆排序,php实现

堆排序,php实现

作者: designer | 来源:发表于2020-05-06 13:50 被阅读0次
<?php
/**
 * Created by PhpStorm.
 * User: fql
 * Date: 19/8/29
 * Time: 下午10:11
 */

namespace app\index\controller;


use think\Controller;

/**
 * Class HeapSort
 * @package app\index\controller
 * 堆排序
 */

class HeapSort extends  Controller
{

    public function  sort(){
        $arr = [1,5,4,9,6,5,7,8];
        $len =count($arr);
        for($i =$len ;$i>0;$i--){
            $this->buildHeap($arr,$i);
        }
        print_r($arr);
    }



    public function  buildHeap(&$arr,$total){
        //最后一个父节点
        $lastParentIndex = intval($total/2)-1;//最后一个父节点的位置

        for ($lastParentIndex;$lastParentIndex>=0;$lastParentIndex--){
            //左节点
            $left = $lastParentIndex*2+1;
            $right = $lastParentIndex*2+2;
            $this->swap($arr[$lastParentIndex],$arr[$left]);
            if($right<($total-1)){
                $this->swap($arr[$lastParentIndex],$arr[$right]);
                $this->swap($arr[$left],$arr[$right]);
            }
        }
        $tmp = $arr[0];
        $arr[0] = $arr[$total-1];
        $arr[$total-1] = $tmp;
    }


    public function  swap(&$min,&$max){
        if($min>$max){
            $tmp = $min;
            $min = $max;
            $max = $tmp;
        }
    }
}

相关文章

  • 堆排序,php实现

  • JS实现堆排序

    原理 堆排序原理 实现 说明 堆排序对大文件很有效 堆排序是不稳定排序

  • 堆排序---基础篇

    本文主要介绍堆排序的一些基本过程和分析。 大纲 堆排序简介 堆排序代码实现 1. 堆排序简介 1.1 堆排序的存储...

  • 堆排序

    目录 1.堆排序介绍 2.堆排序图文说明 3.堆排序的时间复杂度和稳定性 4.堆排序实现 堆排序介绍 堆排序(He...

  • 堆排序的实现

    用大顶堆实现堆排序

  • 堆排序(非递归版)

    时间复杂度是O(nlogN) 但是不常用堆排序,因为堆排序不稳定 Java实现

  • 14.排序算法(5)

    1.堆排序介绍 2. 代码实现

  • python实现堆排序(HeapSort)

    python实现【堆排序】(HeapSort) 算法原理及介绍 堆排序(Heapsort)是指利用堆这种数据结构所...

  • PHP算法系列教程(三)-堆排序

    PHP算法系列教程(三)-堆排序 介绍 要介绍堆排序我们就要先了解什么是堆. 什么是堆 堆(二叉堆)可以视为一棵完...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

网友评论

      本文标题:堆排序,php实现

      本文链接:https://www.haomeiwen.com/subject/dvsayctx.html