PHP는 빠른 정렬을 구현합니다. php 배열 정렬 php 배열 재정렬 php 버블 정렬 계산

WBOY
풀어 주다: 2016-07-29 08:54:57
원래의
978명이 탐색했습니다.

빠른 정렬: 순서가 지정되지 않은 배열 $data에서 비교 값으로 임의의 값을 선택하고, i를 헤드 검색 인덱스로, j를 테일 검색 인덱스로 정의하고, 알고리즘 단계:

(1) 초기화 비교 value $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를 중간 좌표로 이동해야 합니다. 배열의

(7) 배열을 왼쪽과 오른쪽에 순서가 없는 두 개의 배열로 나눈 다음 배열 길이가 1이 될 때까지 1~6을 반복적으로 실행합니다

팁: 중국어 빠른 정렬의 정의는 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);
로그인 후 복사
코드:

위 내용은 빠른 정렬과 PHP 콘텐츠를 포함하여 PHP에서의 빠른 정렬 구현을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿