>백엔드 개발 >PHP 튜토리얼 >삽입 정렬의 PHP 학습 구현

삽입 정렬의 PHP 학습 구현

little bottle
little bottle앞으로
2019-04-24 17:59:282470검색

이 글의 주요 내용은 PHP를 사용하여 삽입 정렬을 구현하는 것입니다. 간단하지만 고전적인 알고리즘 질문이므로 편집자와 함께 복습해 보겠습니다.

 삽입 정렬의 기본 아이디어: 배열을 두 영역(정렬된 영역과 정렬되지 않은 영역)으로 나눕니다. 배열의 첫 번째 요소가 정렬된 영역에 있고 첫 번째 요소 이후의 모든 요소가 안에 있다고 가정합니다. 정렬되지 않은 부분. 정렬 시에는 이중 루프를 사용하며, 외부 루프는 정렬되지 않은 부분에서 정렬할 요소를 꺼내고, 정렬되지 않은 부분을 점차적으로 줄여나가는 데 사용됩니다. (정렬된 부분부터 연속적으로) 정렬할 요소보다 큰 요소를 찾은 다음, 정렬된 더 큰 영역의 요소를 뒤로 이동하면 최종적으로 정렬된 영역 요소의 마지막 요소가 차지하게 됩니다. 정렬할 요소의 원래 위치, 정렬된 영역의 중간 부분은 비어 있음), 마지막으로 요소를 이동한 후 남은 빈 공간에 정렬할 요소를 삽입합니다.

//插入排序
function insert_sort($arr) {
    //获取数组单元个数
    $count = count($arr);
    //外层循环用于从未排序区域中取出待排序元素
    for ($i=1; $i < $count; $i++) {
        //获取当前需要插入已排序区域的元素值
        $temp = $arr[$i];
        //内层循环用于从已排序区域寻找待排序元素的插入位置
        for ($j=$i-1; $j >= 0; $j--) {
            //如果$arr[$i]比已排序区域的$arr[$j]小,就后移$arr[$j]
            if ($temp < $arr[$j]) {        
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $temp;
            } else {
                //如果$arr[$i]不小于$arr[$j],则对已排序区无需再排序
                break;
            }
        }
    }
    return $arr;
}

$arr = array(6, 19, 26, 62, 88, 99, 18, 16, 1);
var_dump(insert_sort($arr));
  测试结果:

 

관련 튜토리얼: PHP 비디오 튜토리얼

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

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