친구가 취업을 하던 중 시험 문제에 부딪혔습니다. 메모해 주세요.
앞으로 만날 가능성이 매우 높습니다.
문제: PHP는 배열을 정렬하기 위해 내장 함수를 사용하지 않으며 내림차순 또는 오름차순일 수 있습니다.
첫 번째 방법: 전설적인 버블 방법
복사 code 코드는 다음과 같습니다.
function arraysort($data, $order = 'asc') {
//asc ascending descDescending
$temp = array ();
$count = count ( $data );
if ($count <= 0)
return false; //전달된 데이터가 올바르지 않습니다.
if ($order == 'asc') {
for($i = 0; $i < $count; $i ) {
for($j = $count - 1; $j > $i; $j --) {
if ($data [$j] < $data [$j - 1]) {
//두 데이터의 위치를 교환
$temp = $data [$j ];
$data [$j] = $data [$j - 1]
$data [$j - 1] = $temp
}
}
} else {
for( $i = 0; $i < $count; $i ) {
for($j = $count - 1; $j > $i; $j --) {
if ($data [ $j] > $data [$j - 1]) {
$temp = $data [$j]
$data [$j] = $data [ $j - 1];
$data [$j - 1] = $temp;
}
}
}
}
return $data; >$data = 배열(7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 ); var_dump ( arraysort ( $data ) ); //오름차순
echo ('
')
var_dump ( arraysort ( $data ,'desc') ); 🎜>
두 번째 방법 : 아니요 뭐라고 불러야 할지 알면 삽입 방법이라고 부르자!囧
코드 복사
function arraysort3($data, $order = 'asc') { //현재는 오름차순으로만 정렬하고 있습니다. $count = count ( $data ) for($i = 1; $i < $count; $i ) {
$temp = $data [$ i];$j = $i - 1
while ( $data [$j] > $temp ) {
$data [$j 1] = $data [$ j];
$data [$j] = $temp;
$j --;//감소 이유: 상위 비트부터 조금씩 판단
}
}
return $ 데이터
}
$data = 배열(7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32); var_dump ( arraysort3 ( $data ) ); //오름차순
위 내용은 내장된 함수를 사용하지 않고, 남쪽 여덟 글자를 배열하는 전문 프로그램인 PHP를 이용하여 배열을 정렬하는 두 가지 알고리즘 코드를 소개한 것으로, 남쪽 여덟 글자를 배열하는 전문 프로그램의 내용도 포함되어 있기를 바랍니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되십시오.