>백엔드 개발 >PHP 튜토리얼 >PHP 기술: PHP 빠른 정렬 알고리즘 예제 분석

PHP 기술: PHP 빠른 정렬 알고리즘 예제 분석

无忌哥哥
无忌哥哥원래의
2018-07-12 14:17:111425검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.