php使用递归与迭代实现快速排序示例
代码如下:
/**
* 递归法实现的快速排序
* @param $seq
* @return array
*/
function quicksort($seq)
{
if (count($seq) > 1) {
$k = $seq[0];
$x = array();
$y = array();
$_size = count($seq); //do not use count($seq) in loop for.
for ($i = 1; $i if ($seq[$i] $x[] = $seq[$i];
} else {
$y[] = $seq[$i];
}
}
$x = quicksort($x);
$y = quicksort($y);
return array_merge($x, array($k), $y);
} else {
return $seq;
}
}
/**用迭代实现
* @param $seq
* @return array
*/
function quicksortX(&$seq)
{
$stack = array($seq);
$sort = array();
while ($stack) {
$arr = array_pop($stack);
if(count($arr) if (count($arr) == 1) {
$sort[] = &$arr[0];
}
continue;
}
$k = $arr[0];
$x = array();
$y = array();
$_size = count($arr);
for ($i = 1; $i if ($arr[$i] $x[] = &$arr[$i];
} else {
$y[] = &$arr[$i];
}
}
!empty($y) && array_push($stack, $y);
array_push($stack, array($arr[0]));
!empty($x) && array_push($stack, $x);
}
return $sort;
}
//$testArr = array(5545, 5, 6, 7675, 100, 9, 233, 566, 789, 456, 23, 55, 7, 4, 343, 564, 5, 45657, 8, 998, 9, 34, 34, 55, 6, 5, 6433, 67, 6, 6766, 4, 2, 42, 25634, 34343, 3, 3, 454, 4, 65, 6678, 57, 5455);
for($i=0;$i $testArr[]=mt_rand(0,10000);
}
//var_dump($testArr);
echo count($testArr).'
';
$start=microtime();
echo count(quicksort($testArr)).'
';
echo microtime()-$start.'
';
var_dump(quicksort($testArr));
echo '------------------------------------------------------------------------
';
echo count($testArr).'
';
$start=microtime();
echo count(quicksortX($testArr)).'
';
echo microtime()-$start.'
';
var_dump(quicksortX($testArr));

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Python에서 빠른 정렬을 구현하는 방법: 1. Quick_sort라는 함수를 정의하고 재귀적 방법을 사용하여 빠른 정렬을 구현합니다. 2. 배열의 길이가 1보다 작거나 같으면 배열을 직접 반환합니다. 그렇지 않으면 배열을 선택합니다. 첫 번째 요소는 피벗 요소(피벗)로 사용되며, 배열은 피벗 요소보다 작고 피벗 요소보다 큰 두 개의 하위 배열로 나뉩니다. 정렬된 배열을 형성하는 피벗 요소입니다.

Java 퀵 정렬(QuickSort)의 핵심 기술과 주의 사항을 숙지하세요. 퀵 정렬(QuickSort)은 일반적으로 사용되는 정렬 알고리즘입니다. 핵심 아이디어는 벤치마크 요소를 선택하여 정렬할 시퀀스를 두 개의 독립적인 부분으로 나누고 하나의 요소를 모두 포함하는 것입니다. 부분이 기본 요소보다 작고 다른 부분의 모든 요소가 기본 요소보다 큰 경우 두 부분이 재귀적으로 정렬되어 최종적으로 순서가 지정된 시퀀스가 얻어집니다. 퀵소트는 평균적으로 O(nlogn)의 시간 복잡도를 가지지만, 최악의 경우에는 O(nlogn)으로 퇴보합니다.

퀵 정렬의 Java 구현 및 성능 분석 퀵 정렬(QuickSort)은 매우 일반적으로 사용되는 효율적인 정렬 알고리즘입니다. 분할 및 정복(Divide and Conquer) 아이디어입니다. 이 알고리즘은 배열을 두 개의 하위 배열로 나눈 다음 두 개의 하위 배열을 각각 정렬하고 마지막으로 전체 배열을 정렬된 시퀀스로 바꿉니다. 퀵 정렬은 대규모 데이터 처리 시 탁월한 성능을 발휘합니다. 퀵 정렬은 재귀적으로 구현됩니다. 기본 아이디어는 다음과 같습니다. 기본을 선택합니다.

Java Quick Sort 기능의 구현 원리 및 최적화 Quick Sort는 분할 정복 방법을 통해 큰 문제를 여러 개의 작은 문제로 나누고 하위 문제를 재귀적으로 해결하여 최종적으로 전체 솔루션을 얻는 효율적인 정렬 알고리즘입니다. . 빠른 정렬에서는 벤치마크 요소를 선택하고 배열을 두 부분으로 나누어야 합니다. 한 부분은 벤치마크 요소보다 작고 다른 부분은 벤치마크 요소보다 큽니다. 그런 다음 하위 문제당 하나의 요소만 남을 때까지 두 부분을 빠르게 다시 정렬합니다. 마지막으로 모든 하위 문제에 대한 솔루션을 결합하여 배열을 얻습니다.

빠른 정렬 방법: 1. Java 샘플 파일을 만듭니다. 2. QuickSort 메서드를 통해 빠른 정렬 알고리즘을 구현합니다. 3. 배열의 요소를 피벗(피벗)으로 선택하고 배열을 두 개의 하위 배열로 나눕니다. 피벗보다 큰 요소를 포함하는 요소 더 작은 요소, 다른 요소는 피벗 요소보다 큰 요소를 포함하고 빠른 정렬 알고리즘이 두 하위 배열에 재귀적으로 적용됩니다. 4. 기본 배열에서 배열을 정렬합니다. 메소드를 실행하고 결과를 출력합니다.

PHP는 매우 인기 있는 프로그래밍 언어이며 웹 개발에 널리 사용됩니다. PHP에서 배열은 매우 일반적인 데이터 유형이자 매우 강력한 데이터 구조입니다. 이 때문에 PHP는 개발자가 배열을 처리하고 조작하는 데 도움이 되는 다양한 배열 함수를 제공합니다. 여기에는 배열을 빠르게 정렬하는 데 도움이 되는 빠른 정렬 기능이 포함되어 있습니다. 퀵 정렬(Quick Sort)은 일반적인 정렬 알고리즘으로, 비교와 교환을 통해 배열을 두 개의 하위 배열로 나눈 다음 재귀적으로 수행하는 것입니다.

Java에서 빠른 정렬 알고리즘을 구현하는 방법 빠른 정렬(QuickSort)은 일반적으로 사용되는 효율적인 정렬 알고리즘입니다. 기본 아이디어는 분할 정복 전략(Divide and Conquer)을 채택하는 것입니다. 한 번에 하나의 요소를 벤치마크 값으로 선택하여 정렬할 배열을 두 부분으로 나누고, 한 부분은 벤치마크 값보다 작습니다. 다른 부분은 벤치마크 값보다 크며 두 부분은 별도로 재귀 정렬되어 최종적으로 전체 배열이 정렬됩니다. 아래에서는 Java 언어를 사용하여 빠른 정렬을 수행하는 방법을 자세히 소개합니다.

Java Quick Sort의 성능 분석 및 비교 Quick Sort(QuickSort)는 빠른 실행 속도와 좋은 성능으로 인해 실제 개발에서 널리 사용되는 비교 기반 정렬 알고리즘입니다. 이 기사에서는 Java의 빠른 정렬 알고리즘에 대한 성능 분석을 수행하고 이를 다른 일반적인 정렬 알고리즘과 비교할 것입니다. 퀵 정렬 알고리즘의 원리 퀵 정렬은 분할 정복 방식의 아이디어를 채택하여 정렬할 데이터를 두 개의 독립적인 부분으로 나누어 왼쪽 및 오른쪽 하위 시퀀스를 반복적으로 정렬하여 전체 시퀀스의 질서를 달성합니다.
