Maison >développement back-end >tutoriel php >Exemple de partage d'algorithme de tri de buckets implémenté en PHP

Exemple de partage d'algorithme de tri de buckets implémenté en PHP

小云云
小云云original
2018-01-08 10:12:481674parcourir

Cet article présente principalement en détail l'algorithme de tri des buckets implémenté en PHP. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer. J'espère qu'il pourra aider tout le monde.

Le tri des seaux au sens simple :

Le principe du tri des seaux est d'organiser d'abord N+1 seaux en tant que conteneurs, si la plage de données est N.
Ensuite bouclez les données de test (données à trier) et mettez-les dans le bucket correspondant. Les données doivent être comprises dans la plage N.
Enfin, bouclez les éléments dans le seau et sortez-les, en les triant de grand à petit ou de petit à grand.

Par exemple :

Notre plage de valeurs est de 10, nous devons alors définir un tableau $arr d'une longueur de 11. Et laisser toutes les valeurs des éléments ​​be est 0
Ensuite, parcourez le tableau qui doit être trié, tel que 5, 3, 5, 2, 8. (La plage de valeurs ici n'est en fait que 8)
Correspond aux données dans le tableau de compartiments $arr à son tour, c'est-à-dire s'il vaut 5, créez $arr[5]++.
À ce moment-là $arr[2]=1 $arr[3]=1 $arr[5]= 2 $arr[8]=1
Bouclez ensuite le tableau de $arr. Si $arr[2]=1, la boucle génère l'élément 2 une fois. Si $arr[5]=2, la boucle génère 5 fois.
La sortie résultante est 2 3 5 5 8
Si la valeur de la boucle va de grande à petite, elle sera triée de grande à petite


<?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>";
 }
}
?>

Inconvénients :

Gain d'espace.
Impossible de trier les données à virgule flottante.

Recommandations associées :

Explication détaillée du tri par bucket de l'algorithme de tri PHP series_php skills

Exemple d'algorithme de tri par bucket d'apprentissage de l'algorithme Python (tri par bloc)

Structure des données Python et exemple de méthode de tri d'allocation commune d'algorithme [tri par compartiment et tri Radix]_python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn