最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php堆排序(heapsort)練習(xí)

 更新時間:2013年11月13日 10:05:06   作者:  
本文內(nèi)容是和大家一起練習(xí)PHP堆排序的一個程序

復(fù)制代碼 代碼如下:

<?
//堆排序應(yīng)用
class heapsort
  {
    var $a;
    function setarray($a)//取得數(shù)組
      {
        $this->a=$a;
      }
    function runvalue($b,$c)//$a 代表數(shù)組,$b代表排序堆,$c代表結(jié)束點,
      {
        while($b<$c)
          {
            $h1=2*$b;
            $h2=(2*$b+1);
            if($h1>$c)
              break;
            elseif($h1==$c)
              {
                if($this->a[$b]>$this->a[$h1])
                  {
                    $t=$this->a[$b];
                    $this->a[$b]=$this->a[$h1];
                    $this->a[$h1]=$t;
                    $la=1;
                  }
                else
                  $la=1;
              }
            elseif(($this->a[$b]>$this->a[$h1])||($this->a[$b]>$this->a[$h2]))
              {
                if($this->a[$h1]>=$this->a[$h2])
                  {
                    $t=$this->a[$h2];
                    $this->a[$h2]=$this->a[$b];
                    $this->a[$b]=$t;
                    $b=$h2;
                  }
                else
                  {
                    $t=$this->a[$h1];
                    $this->a[$h1]=$this->a[$b];
                    $this->a[$b]=$t;
                    $b=$h1;
                  }
              }
            else
              $la=1;
            if($la==1)
              break;
          }
      }
    function getarray()
      {
        $all=count($this->a);
        $b=Floor(($all-1)/2);
        for($i=$b;$i>=1;$i--)//先將數(shù)組建立成堆
          {
            $this->runvalue($i,($all-1));
          }
        for($i=1;$i<$all;$i++)
          {
            $a1=($all-$i);
            if($i==1)
              {
                $t=$this->a[1];
                $this->a[1]=$this->a[$a1];
                $this->a[$a1]=$t;
              }
            else
              {
                $end=($all-$i);
                $this->runvalue(1,$end);
                $t=$this->a[1];
                $this->a[1]=$this->a[$end];
                $this->a[$end]=$t;
              }
          }
        return $this->a;
      }
  }
//////
class sortarr
  {
    var $a;
    function setarray($a)//取得數(shù)組
      {
        $this->a=$a;
      }
    function runvalue($i)
      {
        $max=$this->a[$i];
        $id=$i;
        for($j=($i+1);$j<count($this->a);$j++)
          {
            if($this->a[$j]>$max)
              {
                $max=$this->a[$j];
                $id=$j;
              }
          }
        if($id!=$i)
          {
            $t=$this->a[$id];
            $this->a[$id]=$this->a[$i];
            $this->a[$i]=$t;
          }
      }
    function getarray()
      {
        for($i=1;$i<(count($this->a)-1);$i++)
          $this->runvalue($i);
        return $this->a;
      }
  }
//////
$s=microtime();
$st=explode(' ',$s);
$st1=$st[0];
$st2=$st[1];
//////
$v=10000;//排序數(shù)組長度
$brr[0]=0;
for($i=1;$i<$v;$i++)
  {
    $brr[$i]=rand();
  }
$check=2;//1 stand for heapsort 2 stand for another sort
echo'after sort!!<br>';
if($check==1)
  {
    $arr=new heapsort;
    $arr->setarray($brr);
    $ok=$arr->getarray();
    for($i=1;$i<$v;$i++)
      {
        $j=((($i+1)>($v-1))?($v-1):($i+1));
  /*
 if($ok[$j]<$ok[$i])
          echo'<font color=red>'.$ok[$i].'</font><br>';
        else
          echo$ok[$i].'<br>';*/
      }
  }
elseif($check==2)
  {
    $arr=new sortarr;
    $arr->setarray($brr);
    $ok=$arr->getarray();
    for($i=1;$i<$v;$i++)
      {
        $j=((($i+1)>($v-1))?($v-1):($i+1));/*
        if($ok[$j]<$ok[$i])
          echo'<font color=red>'.$ok[$i].'</font><br>';
        elseif($ok[$j]>$ok[$i])
          echo'<font color=green>'.$ok[$i].'</font><br>';
        else
          echo$ok[$i].'<br>';*/
      }
  }
elseif($check==3)
  {
    sort($brr);
    $ok=$brr;
    for($i=1;$i<$v;$i++)
      {
        $j=((($i+1)>($v-1))?($v-1):($i+1));/*
        if($ok[$j]<$ok[$i])
          echo'<font color=red>'.$ok[$i].'</font><br>';
        elseif($ok[$j]>$ok[$i])
          echo'<font color=green>'.$ok[$i].'</font><br>';
        else
          echo$ok[$i].'<br>';*/
      }
  }
else
  {
    echo'參數(shù)輸入錯誤!!<br>';
  }
//////
$s=microtime();
$st=explode(' ',$s);
$sta=$st[0];
$stb=$st[1];
$ss1=$sta-$st1;
$ss2=$stb-$st2;
if($check==1)
  $word='堆排序';
elseif($check==2)
  $word='常規(guī)排序';
elseif($check==3)
  $word='普通排序';
else
  $word='無排序';
echo$word.'對具有'.$v.'個元素的數(shù)組排序,消耗了'.($ss2+$ss1).'秒時間';
//////
?>

相關(guān)文章

  • laravel使用Redis實現(xiàn)網(wǎng)站緩存讀取的方法詳解

    laravel使用Redis實現(xiàn)網(wǎng)站緩存讀取的方法詳解

    這篇文章主要給大家介紹了關(guān)于laravel使用Redis實現(xiàn)網(wǎng)站緩存讀取的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • PHP生成(支持多模板)二維碼海報代碼

    PHP生成(支持多模板)二維碼海報代碼

    本篇文章給大家分享了PHP生成支持多模板二維碼海報代碼,如果大家對此有需要,可以跟著參考學(xué)習(xí)下。
    2018-04-04
  • PHP開發(fā)微信支付的代碼分享

    PHP開發(fā)微信支付的代碼分享

    最近一直在研究微信,不研究不知道,一研究下一跳啊,微信真的可以做太多事情了,先來看下微信支付的開發(fā)心得吧,以后會慢慢補(bǔ)全其他方面的開發(fā)代碼
    2014-05-05
  • 詳解PHP使用日期時間處理器Carbon人性化顯示時間

    詳解PHP使用日期時間處理器Carbon人性化顯示時間

    本篇文章主要介紹了詳解PHP使用日期時間處理器Carbon人性化顯示時間,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • Yii數(shù)據(jù)庫緩存實例分析

    Yii數(shù)據(jù)庫緩存實例分析

    這篇文章主要介紹了Yii數(shù)據(jù)庫緩存用法,結(jié)合實例形式分析了Yii數(shù)據(jù)庫緩存的使用步驟與相關(guān)實現(xiàn)代碼,需要的朋友可以參考下
    2016-03-03
  • 在PHP中使用X-SendFile頭讓文件下載更快

    在PHP中使用X-SendFile頭讓文件下載更快

    這篇文章主要介紹了在PHP中讓文件下載更快的一個方法,那就是使用X-SendFile頭實現(xiàn),主流量的服務(wù)器都支持這個頭文件,的朋友可以參考下
    2014-06-06
  • PHP實現(xiàn)文件上傳功能實例代碼

    PHP實現(xiàn)文件上傳功能實例代碼

    這篇文章主要介紹了PHP實現(xiàn)文件上傳功能實例代碼,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-05-05
  • Laravel監(jiān)聽數(shù)據(jù)庫訪問,打印SQL的例子

    Laravel監(jiān)聽數(shù)據(jù)庫訪問,打印SQL的例子

    今天小編就為大家分享一篇Laravel監(jiān)聽數(shù)據(jù)庫訪問,打印SQL的例子,有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • ThinkPHP基于PHPExcel導(dǎo)入Excel文件的方法

    ThinkPHP基于PHPExcel導(dǎo)入Excel文件的方法

    這篇文章主要介紹了ThinkPHP基于PHPExcel導(dǎo)入Excel文件的方法,對于Excel文件的上傳、讀取操作以及寫入數(shù)據(jù)庫等都做了較為詳盡的講述,在進(jìn)行項目開發(fā)的過程中非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • 深入PHP操作MongoDB的技術(shù)總結(jié)

    深入PHP操作MongoDB的技術(shù)總結(jié)

    本篇文章是對PHP操作MongoDB的技術(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評論

沙洋县| 和龙市| 伊宁县| 新余市| 会昌县| 吉水县| 孙吴县| 西青区| 安平县| 博湖县| 平果县| 张家港市| 明光市| 中阳县| 乃东县| 凤山县| 剑阁县| 淮南市| 乌什县| 阿坝县| 泗阳县| 永善县| 开化县| 岗巴县| 新化县| 巴林左旗| 陆良县| 安吉县| 靖西县| 搜索| 新干县| 洛隆县| 枣强县| 监利县| 肇州县| 凤凰县| 墨竹工卡县| 石渠县| 清原| 海城市| 都昌县|