>  기사  >  백엔드 개발  >  간단한 의미의 버킷 정렬(PHP 구현)

간단한 의미의 버킷 정렬(PHP 구현)

藏色散人
藏色散人앞으로
2020-02-22 14:08:202397검색

간단한 의미의 버킷 정렬:

● 버킷 정렬의 원리는 데이터 범위가 N인 경우 먼저 N+1 버킷을 컨테이너로 배열하는 것입니다.

● 그런 다음 테스트 데이터(정렬할 데이터)를 루프하여 해당 버킷에 넣습니다. 데이터는 N 범위 내에 있어야 합니다.

● 마지막으로 버킷의 요소를 반복하고 출력하여 큰 것에서 작은 것 또는 작은 것에서 큰 것으로 정렬합니다.

예:

● 값 범위가 10이면 길이가 11인 $arr 배열을 정의해야 합니다. 그리고 모든 요소 값을 ​​​​0

● 그런 다음 배열을 반복합니다. 예를 들어 5,3,5,2,8 입니다.

● $arr 버킷 배열의 요소에 순서대로 해당합니다. 즉, 5인 경우 make $arr[5]++ .

● 이때 $arr[2] =1 $arr[3]=1 $arr[5]=2 $arr[8]=1

● 그런 다음 $arr의 배열을 반복합니다. [2]=1, 루프 및 출력 요소 2가 한 번, $ arr[5]=2이면 루프는 5를 두 번 출력합니다

● 결과 출력은 2 3 5 5 8

● 루프 값이 큰 것부터 작으면 큰 순으로 정렬됩니다

<?php
//设置默认数组,默认值为0;
$arr = array();
for ($i = 0; $i <= 10; $i++) {
    $arr[$i] = 0;
}
//设置测试的五个数据
$arr1 = array(5, 3, 5, 2, 8);
//根据数据 对默认数组的对应元素进行+1;  J的取值范围不能等于$arr1数组长度  
for ($j = 0; $j < count($arr1); $j++) {
    //这边给相应的数组值+1
    $arr[$arr1[$j]]++;
}
//开始循环输出  默认数组 $arr 里面相应的值
for ($k = 0; $k <= 10; $k++) {
    
    for ($l=1; $l <=$arr[$k]; $l++) { 
        echo "$k </n>";
    }
}
?>

단점 :

● 공간 낭비

● 부동 소수점 데이터는 정렬할 수 없습니다.

더 많은 프로그래밍 관련 내용을 보려면 PHP 중국어를 참고하세요. 홈페이지 프로그래밍 입문 칼럼!

위 내용은 간단한 의미의 버킷 정렬(PHP 구현)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
이전 기사:PHP 팁 공유다음 기사:PHP 팁 공유