phpのいくつかの配列ソート方法の共有

2594 ワード

A.内部ソート(メモリに直接ロードしてソート):交換式ソート(バブルと高速法)、選択式ソート、挿入式ソートを含む
B.外部ソート(データ量が多いため、外部ストレージでソートする必要がある):連結ソート、直接連結ソートを含む
【バブルソート:後ろから前へ、隣接する要素のソートコードを順番に比較し、逆順が見つかったら交換し、1ラウンドが終わったら、すべての隣接数が逆順にならないまで、順番に並べ替える】
 
  
function maoPao($arr,$style)//【 , 。 $arr &, $arr1 , $arr1 】
{
$temp=0;
$flag=false;
for($i=0;$i{
for($j=0;$j{
if($style=='bts') $op=$arr[$j]else if($style=='stb') $op=$arr[$j]>$arr[$j+1];
if($op)
{
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;// flag==false; if , ,
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(101,101,-9,-8,0,76,1,57,43,90,23,-56);
maoPao($arr1,'stb');//small to big

【選択ソート:2番目からn番目の数をそれぞれ1番目の数と比較し、交換し、3番目からn番目の数をそれぞれ2番目の数と比較し、並べ終わるまで交換する】
 
  
function selectSort($arr,$style)
{
$temp=0;
$flag=false;
for($i=0;$i{
for($j=$i+1;$j{
if($style=='bts') $op=$arr[$i]else if($style=='stb') $op=$arr[$i]>$arr[$j];
if($op)
{
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(21.5,33,90,7,-4,5,55,11);
selectSort($arr1,'stb');
 
  
function selectSort($arr,$style)
{
$temp=0;
$flag=false;
for($i=0;$i{
for($j=$i+1;$j{
if($style=='bts') $op=$arr[$i]else if($style=='stb') $op=$arr[$i]>$arr[$j];
if($op)
{
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
$flag=true;
}
}
if($flag==false)
{
break;
}
}
foreach ($arr as $key => $value)
{
echo $value.',';
}
}
$arr1=array(21.5,33,90,7,-4,5,55,11);
selectSort($arr1,'stb');
echo "
";