>  기사  >  백엔드 개발  >  PHP를 사용하여 4가지 일반적인 정렬 알고리즘과 구현 원칙 구현

PHP를 사용하여 4가지 일반적인 정렬 알고리즘과 구현 원칙 구현

巴扎黑
巴扎黑원래의
2016-11-23 11:56:091002검색


******삽입 정렬(1차원 배열)

1, 첫 번째 요소부터 정렬이 완료된 것으로 간주 가능

2, 다음 요소를 꺼내고 정렬된 요소 순서에서 뒤에서 앞으로 스캔

3, (정렬된) 요소가 새 요소보다 크면 해당 요소를 다음 위치

4, 정렬된 요소가 새 요소보다 작거나 같은 위치를 찾을 때까지 3단계를 반복합니다.

5, 해당 위치에 새 요소를 삽입합니다

6, 2단계 반복

*/

function insert_sort($arr)

{

$len = count($arr);

for ($i=1; $i<$len; $i++)

{

$tmp = $arr[$i];

$j = $i -1;

while ($arr[$j] > $tmp && $j>=0)

$arr[$j];
🎜>/*

******버블 정렬(1차원 array)

1, 인접한 요소를 비교합니다. 첫 번째 것이 두 번째 것보다 크면 둘 다 교환하세요.

2. 처음의 첫 번째 쌍부터 끝의 마지막 쌍까지 인접한 요소의 각 쌍에 대해 동일한 작업을 수행합니다. 이때 마지막 요소가 가장 큰 숫자가 되어야 합니다.

3. 마지막 요소를 제외한 모든 요소에 대해 위 단계를 반복합니다.

4. 비교할 숫자 쌍이 없을 때까지 점점 더 적은 수의 요소에 대해 위 단계를 계속 반복합니다.

*/

function bubble_sort($arr)

{

$len = count($arr);

for ( $i=0; $i<$len; $i++)

{

for ($j=$len-1; $j>$i; $j--) >
{

if ($arr[$j-1] > $arr[$j])

{

$tmp = $arr[$ j-1];

                         $arr[$j-1] = $arr[$j];                                     

}

}

$arr 반환 ;

}

/*

***** *선택 정렬(1차원 배열)

1, 먼저 다음에서 가장 작은 요소를 찾습니다. 정렬되지 않은 시퀀스를 정렬된 시퀀스의 시작 위치인

2에 저장한 다음 Continue에서 정렬되지 않은 나머지 요소를 선택하여 가장 작은 요소를 찾아 정렬된 시퀀스의 마지막에 넣습니다.

3 등 모든 요소가 정렬될 때까지 계속됩니다.

*/

function select_sort($arr){

$count = count($arr);

for($i=0; $ i<$count-1; $i++)

{

$k = $i;

for($j=$i+1; $j<$count ; $ j ++)

{

IF ($ arr [$ k] & gt; $ arr [$ j]

{

$ k = $j;

}

}

if ($k != $i)

$t mp = $arr [$i] ;

                 $arr[$i] = $arr[$k];                                             >
}

$arr 반환 ;

}

/ *

******퀵 정렬(1차원 배열)

1, 먼저 중간 값을 무작위로 선택

2, 중간보다 작은 값을 입력 왼쪽 값, 오른쪽 중간 값보다 큰 값

3, 그런 다음 왼쪽 데이터와 오른쪽 데이터 각각에 대해 1단계와 2단계를 재귀적으로 호출하여 왼쪽 값, 중간 값, 오른쪽 값을 병합합니다. 데이터.

*/

quick_sort($arr) 함수

{

    if (count($arr) <= 1)

    {

        return $arr;

    }

    $key = $arr[0];

    $left_arr = array();

    $right_arr = array();

    for ($i=1; $i
    {

        if ($arr[$i] <= $key) $left_arr[] = $arr[$i] ;

        else  $right_arr[] = $arr[$i];

    }

    $left_arr =quick_sort($left_arr);

    $right_arr =quick_sort($right_arr);

    return array_merge($left_arr, $key, $right_arr);

}

$a = array(123,321,432,341345,45234, 53,493);

echo "

";<br><br>print_r(select_sort($a));<br><br>print_r(bubble_sort($a));<br> <br>print_r(insert_sort($a));<br><br>print_r(quick_sort($a));<br><br>echo "
";

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