首页 > 编程语言 > 详细

三色旗算法

时间:2016-01-20 15:55:02      阅读:330      评论:0      收藏:0      [点我收藏+]
<?php

$arr = array(‘r‘, ‘b‘, ‘w‘, ‘b‘, ‘b‘, ‘w‘, ‘r‘, ‘w‘, ‘r‘, ‘r‘, ‘b‘, ‘w‘);
echo implode(‘--‘, $arr). "\n";
$wFlag = $bFlag = 0;
$rFlag = count($arr) - 1;
while($wFlag <= $rFlag){
    if($arr[$wFlag] == ‘w‘){
        $wFlag ++;
    }elseif($arr[$wFlag] == ‘b‘){
        swap($arr, $wFlag, $bFlag);
        $wFlag++;
        $bFlag++;
    }else{
        while($wFlag < $rFlag && $arr[$rFlag] == ‘r‘){
            $rFlag--;
        }
        swap($arr, $wFlag, $rFlag);
        $rFlag--;
    }
}

echo implode(‘--‘, $arr). "\n";

function swap(&$arr, $x, $y){
    $temp = $arr[$x];
    $arr[$x] = $arr[$y];
    $arr[$y] = $temp;
}


本文出自 “我是IT农民工” 博客,请务必保留此出处http://lfliangli.blog.51cto.com/2853536/1736702

三色旗算法

原文:http://lfliangli.blog.51cto.com/2853536/1736702

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!