>  기사  >  백엔드 개발  >  삽입 정렬을 구현하는 PHP 코드 예제

삽입 정렬을 구현하는 PHP 코드 예제

不言
不言앞으로
2019-01-29 11:25:582412검색

이 기사의 내용은 PHP의 삽입 정렬에 대한 코드 예제입니다. 특정 참조 값이 있으므로 도움이 될 수 있습니다.

정렬 알고리즘은 여기까지입니다. 이 기사에서 다루는 버블 정렬, 퀵 정렬, 선택 정렬, 삽입 정렬 등 이 네 가지 알고리즘은 비교적 간단하고 이해하기 쉽습니다. 더 복잡한 알고리즘은 다른 사람을 오도하지 않도록 과시하지 않습니다.

Insertion Sort

Insertion Sort(영어: Insertion Sort)는 간단하고 직관적인 정렬 알고리즘입니다. 정렬되지 않은 데이터의 경우 정렬된 시퀀스의 뒤에서 앞으로 스캔하여 해당 위치를 찾아 삽입합니다. 삽입 정렬의 구현에서는 일반적으로 내부 정렬(즉, O(1) 여분의 공간만 사용하는 정렬)이 사용되므로 스캔 과정에서 뒤에서 앞으로 반복적으로 점진적으로 이동해야 합니다. 요소를 뒤로 정렬하여 최신 요소에 대한 삽입 공간을 제공합니다.

일반적으로 삽입 정렬은 내부 위치를 사용하여 배열에서 구현됩니다. 구체적인 알고리즘은 다음과 같습니다.

1. 첫 번째 요소부터 시작하여 해당 요소가 정렬된 것으로 간주할 수 있습니다.

2. 다음 요소를 꺼내고 정렬된 요소 순서에서 뒤에서 앞으로 스캔합니다. .(정렬된) 요소가 새 요소보다 큰 경우 요소를 다음 위치로 이동합니다

4. 정렬된 요소가 새 요소보다 작거나 같은 위치를 찾을 때까지 3단계를 반복합니다. . 해당 위치에 새 요소를 삽입한 후

6. 2~5단계를 반복하세요

Wikipedia의 소개. 2~5단계에 중점을 둡니다.

Gif 데모

삽입 정렬을 구현하는 PHP 코드 예제

삽입 정렬을 구현하는 PHP 코드 예제

<?php $arr = [33, 24, 8, 21, 2, 23, 3, 32, 16];

function insertSort($arr)
{
    $count = count($arr);

    if ($count < 2) {
        return $arr;
    }

    for ($i = 1; $i < $count; $i++) {
        // 当前值
        $temp = $arr[$i];
        for ($k = $i - 1; $k >= 0; $k--) {
            // 条件成立,比较值后挪一位,将当前值替换成比较值
            // 倒序 $temp > $arr[$k]
            if ($temp  2 [1] => 3 [2] => 8 [3] => 16 [4] => 21 [5] => 23 [6] => 24 [7] => 32 [8] => 33 )

위 내용은 삽입 정렬을 구현하는 PHP 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제