이 글은 주로 PHP 퀵 정렬 알고리즘을 소개하고, 퀵 정렬의 원리, 단계, 관련 PHP 정의, 사용 방법을 예제 형식으로 분석합니다. 도움이 필요한 친구는 이 글을 참고하세요
#🎜 🎜# 이 예에서는 PHP 빠른 정렬 알고리즘을 설명합니다. 참조용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다. 빠른 정렬: 순서가 지정되지 않은 배열 $data에서 비교 값으로 임의의 값을 선택하고 i를 헤드 검색 인덱스로 정의하고 j를 정의합니다. 꼬리 검색 인덱스로알고리즘 단계:
(1) 초기화 비교 값$value=$data[0]
, $i=1
, $j=count($data)-1
$value=$data[0]
,$i=1
,$j=count($data)-1
(2)首先从尾部开始检索,判断$data[$j]
是否小于$value
,若不小于则$j--
,继续检索,直到找到比$value
小的坐标
(3)这时开始头部检索,判断$data[$i]
是否大于$value
,若不大于则$i++
,继续检索,直到找到比$value
大的坐标
(4)这时$data[$j]
与$data[$i]
的值相互交换,即把比$value
大的放到右边,把比$value
小的放到左边
(5)重复3、4直到$i==$j
(6)这时已经把比$value
大的放到右边,把比$value
小的放到左边,确定了中间的坐标位置为$i
,中间值为$value
,把$data[$i]
的值与$data[0]
的值交换,因为中间值为$value
,需要把$value
(2) 끝에서 첫 번째 검색 , $data[$j]
가 $value
보다 작은지 판단하세요. 그렇지 않다면 $j--
를 선택하고 값이 나올 때까지 계속 검색하세요. 작은 좌표
(3) 이때 $data[$i]
가 보다 큰지 확인하기 위해 헤더 검색이 시작됩니다. >$value
, $i++
보다 크지 않으면 $value
보다 큰 좌표를 찾을 때까지 계속 검색하세요. (4) 이때 $ data[$j]
와 $data[$i]
의 값이 서로 교환되는데, 즉 더 큰 값이 된다. $value
보다 큰 값이 오른쪽에 배치되고, $value
보다 작은 값이 오른쪽에 배치됩니다. left
(5) $i==$j
( 6) 이 때, 보다 큰 항목은 <code>$i==$j
까지 3과 4를 반복합니다. code>$value를 오른쪽에 배치하고, $value
보다 작은 항목을 왼쪽에 배치했습니다. 가운데의 좌표 위치를 $로 결정합니다. i
, 중간 값은 $value
입니다. $data[$i]
값을 $data[0] 교환, 중간 값이 <code>$value
이므로 $value
를 배열의 중간 좌표
(7)로 이동해야 합니다. ) 배열은 순서대로 왼쪽과 오른쪽 두 개의 Array로 나누어 배열 길이가 1
Tips: 빠른 정렬에 대한 중국어 정의는 Baidu#에서 더 명확해질 것입니다. 🎜🎜#
코드 :
<?php header("Content-type: text/html; charset=utf-8"); function quickSort($data, $startIndex, $endIndex){ if($startIndex < $endIndex){ $value = $data[$startIndex]; // 对比值 $startT = $startIndex + 1; $endT = $endIndex; while ($startT != $endT) { // 找到比对比值小的坐标 while ($data[$endT] > $value && $endT > $startT){ $endT--; } // 找到比对比值大的左边 while ($data[$startT] < $value && $startT < $endT){ $startT++; } if($endT > $startT){ $temp =$data[$startT]; $data[$startT] = $data[$endT]; $data[$endT] = $temp; } } // 防止数组已经排序好的情况 if($data[$startT] < $value){ $data[$startIndex] = $data[$startT]; $data[$startT] = $value; } $data = quickSort($data, $startIndex, $startT - 1); $data = quickSort($data, $startT + 1, $endIndex); return $data; }else{ return $data; } } $data = array(10, 5, 30, 22, 1, 42, 14, 34, 8, 13, 28, 36, 7); $data = quickSort($data, 0, count($data) - 1); var_dump($data);
실행 결과: # 🎜🎜#
array(13) { [0]=> int(1) [1]=> int(5) [2]=> int(7) [3]=> int(8) [4]=> int(10) [5]=> int(13) [6]=> int(14) [7]=> int(22) [8]=> int(28) [9]=> int(30) [10]=> int(34) [11]=> int(36) [12]=> int(42) }
위 내용은 PHP 기술: PHP 빠른 정렬 알고리즘 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!