位图排序

$bitmap=array_fill(0,1,0);
$arr =[1,4,3,6,7];
$size = PHP_INT_SIZE * 8;

foreach ($arr as $key => $value){
	$index = floor($value/$size);
	$pos = $value%$size;
	$tmp = 1 << $pos;
	$bitmap[$index]=$bitmap[$index] | $tmp;
}

foreach ($bitmap as $k => $v) {
	$start = $k*$size;
	for($i=0;$i<$size;$i++){
		$t =1<< $i;
		if($v & $t){
			echo $start+$i.PHP_EOL;
		}
	}
}

  

posted on 2019-12-24 00:11  孤灯引路人  阅读(131)  评论(0编辑  收藏  举报

导航