PHP 빠 른 정렬 알고리즘 상세 설명

콘 셉 트
이곳 은 바 이 두 백과 의 그림 한 장 을 빌려 매우 형상 적 이다.

빠 른 정렬 알고리즘 은 거품 알고리즘 에 대한 최적화 이다.그의 사상 은 먼저 배열 을 분할 하고 큰 요소 수 치 를 임시 배열 에 넣 고 작은 요소 수 치 를 다른 임시 배열 에 넣 는 것 이다.마지막 으로 작은 배열 요소 와 큰 배열 요 소 를 합 친다.여기에 재 귀적 인 사상 을 썼 다.
PHP 구현

/*
   
*/

function quickSort($array)
{
    if(!isset($array[1]))
        return $array;
    $mid = $array[0]; // ,
    $leftArray = array();
    $rightArray = array();

    foreach($array as $v)
    {
        if($v > $mid)
            $rightArray[] = $v;  // $mid
        if($v < $mid)
            $leftArray[] = $v;   // $mid
    }

    $leftArray = quickSort($leftArray); //
    $leftArray[] = $mid;        // ,

    $rightArray = quickSort($rightArray);  //
    return array_merge($leftArray,$rightArray);  //
}

거품 알고리즘 과 비교
여기 서 나 는 이전에 쓴 거품 알고리즘 이 실현 한 정렬 과 비교 해 보 았 는데 이 알고리즘 이 거품 알고리즘 보다 효율 이 훨씬 높다 는 것 을 알 수 있다.

$a = array_rand(range(1,3000), 1500);  // 1600 , , 1500, 。
shuffle($a);  //
$t1 = microtime(true);
quickSort($a);  //
$t2 = microtime(true);
echo (($t2-$t1)*1000).'ms<br/>';

require('./maopao.php');  //
$t1 = microtime(true);
maoPao($a);   //
$t2 = microtime(true);
echo (($t2-$t1)*1000).'ms';

실행 결과:

12.10880279541ms
772.64094352722ms

좋은 웹페이지 즐겨찾기