버블 정렬, 퀵 정렬, 이진 검색은 간단하지만 한동안 사용하지 않으면 잊어버리기 쉽습니다. 편집자가 찾아 모두와 함께 배우기 위해 공유한 PHP 구현 코드는 다음과 같습니다.
최대값이 나올 때마다
function bubbleSort($arr) { $count = count($arr); if ($count == 0) return false; for ($i = 0; $i < $count - 1; $i++) { for ($k = 0; $k < $count - 1 - $i; $k++) { if ($arr[$k] < $arr[$k + 1]) { $tmp = $arr[$k]; $arr[$k] = $arr[$k + 1]; $arr[$k + 1] = $tmp; } } } return $arr; }
기준값으로 왼쪽보다 작은 값, 오른쪽보다 큰 값을 선택한 후 왼쪽과 오른쪽이 재귀되고, 마지막으로 병합
function quickSort($arr) { $count = count($arr); if ($count <= 1) return $arr; $base = $arr[0]; $left = $right = []; for ($i = 1; $i < $count; $i++) { if ($arr[$i] < $base) { $left[] = $arr[$i]; } else { $right[] = $arr[$i]; } } $left = quickSort($left); $right = quickSort($right); return array_merge($left, [$base], $right); }
가장 작다고 가정되는 값을 선택하고, 그보다 작다면 순서대로 비교해보세요. 위치를 바꿔보세요
function selectSort($arr) { $count = count($arr); if ($count <= 1) return $arr; for ($i = 0; $i < $count; $i++) { //假设最小值位置 $p = $i; //用假设的最小值$arr[$p]轮流比较,发现比他小的就互换 for ($j = $i + 1; $j < $count; $j++) { if ($arr[$p] > $arr[$j]) { $p = $j; } } if ($p != $i) { $tmp = $arr[$p]; $arr[$p] = $arr[$i]; $arr[$i] = $tmp; } } return $arr; }
이진 검색은 정렬된 배열이어야 합니다. 매번 배열의 중간 위치에 있는 값을 대상과 비교하세요.
function binarySearch(array $arr, $target) { $low = 0; $high = count($arr) - 1; while ($low <= $high) { $middle = floor(($high + $low) / 2); if ( $arr[$middle] == $target ) { return $middle; } elseif ( $arr[$middle] < $target ) { $low = $middle + 1; } else { $high = $middle - 1; } } return false; }
추천 튜토리얼: PHP 비디오 튜토리얼
위 내용은 PHP는 여러 정렬 및 검색 알고리즘을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!