>백엔드 개발 >PHP 튜토리얼 >PHP의 일부 배열 정렬 방법 공유

PHP의 일부 배열 정렬 방법 공유

高洛峰
高洛峰원래의
2016-12-01 09:49:021041검색

A. 내부 정렬(정렬을 위해 메모리에 직접 로드): 교환 정렬(버블 및 빠른 방법), 선택 정렬, 삽입 정렬 포함
B. 외부 정렬(데이터 양이 많으므로 사용 필요) 정렬을 위한 외부 저장소): 병합 정렬, 직접 병합 정렬 포함

[버블 정렬: 뒤에서 앞으로 순서대로 인접한 요소의 정렬 코드를 비교하여 역순이 발견되면 교환합니다. 라운드 끝났다 다시 와라 한 라운드, 인접한 모든 숫자가 역순, 즉 순서대로 배열될 때까지]
코드 복사 코드는 다음과 같습니다.
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]<$arr[$j+1]
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');//작은 것에서 큰 것

[선택 정렬: 두 번째 숫자부터 n번째 숫자까지 각각 첫 번째 숫자와 비교하여 교환합니다. 세 번째 숫자와 n 번째 숫자를 각각 두 번째 숫자와 비교하여 배열이 완료될 때까지 교환]
코드를 복사하세요. 코드는 다음과 같습니다.
function selectSort($arr,$style)
{
$temp=0;
$flag=false;
for($i=0;$i{
($j=$i+1;$j{
if($style=='bts') $op=$arr[$i]<$ arr[$j]
else if($ style=='stb') $op=$arr[$i]>$arr[$j]
if($op)
{
$temp=$arr[$i]
$arr[$i]=$arr[$j]
$arr[$j]=$temp; ;
}
}
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]<$arr[$j]
else if($style=='stb') $op= $arr[$i]>$arr[$j]
if($op)
{
$temp=$ 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 "
";

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.