码迷,mamicode.com
首页 > 编程语言 > 详细

三色旗算法

时间:2016-01-20 15:57:50      阅读:177      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!