이것은() 페이지 php.net의에 usort에서 예 # 1 :PHP에서 usort() 단계를 보는 방법은 무엇입니까?
가<?php
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a, "cmp");
foreach ($a as $key => $value) {
echo "$key: $value\n";
}
?>
에 usort 함수는 쌍으로 배열 내의 값 ($ A- $ B를 얻어, 이렇게이다 - 3-2 , 2-5, 5-6, 6-1) cmp() 함수가 -1, 0 또는 1을 반환하는지 여부에 따라 $ b 값을 이동합니다. -1이면 $ b가 현재 쌍), 0 인 경우 같은 위치에 있고 1 인 경우 위로 이동합니다. 이것이 php.net의 수동 usort() 페이지의 최상위 주석을 기반으로 작동하는 방법입니다.
이 작업이 단계별로 (소팅 프로세스) 어떻게 작동하는지 볼 수있는 방법이 있습니까? 나는 그것을 볼 수 있습니까 아니면 정렬이 완료된 후에 최종 결과를 볼 수 있습니까? 이 프로세스가 어떻게 작동하는지 완전히 이해하고 싶습니다.
내가() 정렬이 특정에 usort의 단계를보고 저를 가능하게 할 PHP 코드의 조각을 쓸 수 (또는 '퀵 알고리즘 시각화 "를 구글) http://www.algomation.com/algorithm/quick-sort-visualization에서의 vizualisation를 볼 수 있습니까? –
PHP는 정렬 알고리즘을 구현하고 두 항목을 비교해야 할 때, 두 번째 인수로 제공하는 콜백을'usort()'에 사용합니다. 수십 개의 정렬 알고리즘이 있습니다. PHP는 아마도 quicksort를 사용합니다 (가장 빠른 정렬 알고리즘 중 하나입니다). PHP 소스를 확인하면 알 수 있습니다. 또한 비교 함수가 인수에 대한 정보를 표시 할 수 있습니다. 정렬 알고리즘이 좋다면이 정보를 기반으로 알고리즘을 식별 할 수 있습니다. 그렇지 않다면 글쎄, 나는 너를 너무 많이 도와주지 않는다고 생각한다. (그리고 당신은 어떤 정렬 알고리즘을 배워야한다.) – axiac
예,이 설명서 페이지의 맨 위 주석을 기반으로 한 usort라고 생각합니다. 나는이 단계를 볼 수 있는지 궁금합니다. 그렇지 않습니까? 끝날 때/끝에서 결과를 제공합니까? 이것이 quicksort 경우이 작동하는 방법을 조사해야 할 것 같아요. 편집 : 그럼 아마 방법을 PHP 수준에서보고 그냥 Quicksort 봐? –