백엔드 개발 파이썬 튜토리얼 php使用递归与迭代实现快速排序示例

php使用递归与迭代实现快速排序示例

Jun 06, 2016 am 11:29 AM
빠른 정렬

代码如下:


/**
 * 递归法实现的快速排序
 * @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));

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Python을 사용하여 빠른 정렬을 구현하는 방법 Python을 사용하여 빠른 정렬을 구현하는 방법 Dec 18, 2023 pm 03:37 PM

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

Java 빠른 정렬 팁 및 주의사항 Java 빠른 정렬 팁 및 주의사항 Feb 25, 2024 pm 10:24 PM

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

Java로 구현된 Quick Sort 알고리즘과 효율성 평가 Java로 구현된 Quick Sort 알고리즘과 효율성 평가 Feb 18, 2024 pm 03:38 PM

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

최적화 및 구현 원칙: Java의 빠른 정렬 최적화 및 구현 원칙: Java의 빠른 정렬 Feb 20, 2024 pm 01:24 PM

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

Java에서 함수를 빠르게 정렬하는 방법 Java에서 함수를 빠르게 정렬하는 방법 Jan 18, 2024 pm 05:26 PM

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

PHP에서 배열 함수를 사용한 빠른 정렬 PHP에서 배열 함수를 사용한 빠른 정렬 Jun 16, 2023 am 08:54 AM

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

Java를 사용하여 빠른 정렬 알고리즘을 구현하는 방법 Java를 사용하여 빠른 정렬 알고리즘을 구현하는 방법 Sep 19, 2023 am 11:28 AM

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

Java Quick Sort의 효율성 및 성능 평가 Java Quick Sort의 효율성 및 성능 평가 Feb 19, 2024 pm 10:16 PM

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

See all articles