Maison  >  Article  >  développement back-end  >  PHP implémente un algorithme de tri par compartiment

PHP implémente un algorithme de tri par compartiment

jacklove
jackloveoriginal
2018-05-22 17:39:151685parcourir

Cet article explique comment implémenter l'algorithme de tri des buckets en PHP.

Tri par buckets au sens simple :

Le principe du tri par buckets est d'organiser d'abord N+1 buckets 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 que toutes les valeurs des éléments soient 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 de 8)

Correspond aux données du compartiment $arr. tableau à son tour, c'est-à-dire s'il vaut 5 , alors créez $arr[5]++.

À ce moment-là $arr[2]=1 $arr[3]=1 $arr[5] =2 $arr[8]=1

Ensuite, bouclez le tableau de $arr. Si $arr[2]=1, la boucle produira l'élément 2 une fois. la boucle affichera l'élément 5 deux fois.

Le résultat est 2 3 5 5 8

Si la valeur de la boucle va de grande à petite, elle sera triée de grande à petite

//Définissez le tableau par défaut, la valeur par défaut est 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 ";
 
}
 
}
 
?>

Cet article explique comment implémenter l'algorithme de tri des compartiments en PHP Pour plus de contenu connexe, veuillez payer. attention au site PHP chinois.

Recommandations associées :

Fonctionnement cohérent de la base de données du framework thinkPHP5 : détails d'utilisation de cache()

Interface PHP héritage multiple et tarits Détails du didacticiel sur la façon d'obtenir plusieurs effets d'héritage

Tutoriel PHP sur la façon d'obtenir la date de début et la date de fin de la semaine d'une certaine année

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