이 글의 주요 내용은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!