Maison développement back-end Tutoriel Python Comment écrire un algorithme de tri par bucket en Python ?

Comment écrire un algorithme de tri par bucket en Python ?

Sep 19, 2023 pm 02:19 PM
python 算法 桶排序

Comment écrire un algorithme de tri par bucket en Python ?

Comment écrire un algorithme de tri par bucket en Python ?

Introduction :
Bucket Sort est un algorithme de tri non comparatif. Son principe est de diviser les éléments à trier en différents buckets, puis de trier les éléments dans chaque bucket, et enfin de trier tous les buckets. séquence pour obtenir le résultat trié. Le tri par compartiments convient aux situations où les éléments à trier se situent dans une certaine plage et sont uniformément répartis. La complexité temporelle est O(n+k), n représente le nombre d'éléments à trier et k représente le nombre de compartiments.

Étapes spécifiques :

  1. Déterminez la valeur min_value minimale et la valeur max_value maximale des éléments à trier ;
  2. Calculez le nombre de buckets bucket_num La méthode la plus simple consiste à diviser la plage des éléments triés en parties égales en fonction du nombre. de buckets à diviser ;
  3. Créez des buckets bucket_num, représentés par des listes, et chaque bucket est initialisé à une liste vide
  4. Mettez les éléments à trier dans les buckets correspondants. buckets selon les règles.Dans cet exemple, nous diviserons les éléments par (max_value-min_value+1), puis arrondirons, puis soustrairons la valeur minimale pour obtenir l'indice du bucket
  5. Trier les éléments dans chaque non-; videz le seau, et vous pouvez utiliser n'importe quel algorithme de tri ;
  6. Versez tous les seaux afin d'obtenir les résultats triés ;

Implémentation du code :

def bucket_sort(arr):
    min_value, max_value = min(arr), max(arr)
    bucket_num = len(arr)
    bucket_size = (max_value - min_value + 1) // bucket_num + 1  # 计算桶的大小,加1是为了包含最大值
    buckets = [[] for _ in range(bucket_num)]  # 创建桶

    # 将元素放入桶中
    for val in arr:
        index = (val - min_value) // bucket_size  # 计算桶的下标
        buckets[index].append(val)

    # 对每个桶中的元素进行排序
    for bucket in buckets:
        bucket.sort()

    # 将所有桶中的元素依次取出
    sorted_arr = []
    for bucket in buckets:
        sorted_arr.extend(bucket)

    return sorted_arr
Copier après la connexion

Test :

arr = [4, 1, 9, 6, 3, 7, 5, 8, 2]
sorted_arr = bucket_sort(arr)
print(sorted_arr)  # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
Copier après la connexion

Résumé :
Le tri par seau est un algorithme de tri simple et efficace qui peut atteindre une complexité temporelle linéaire lorsque les éléments sont répartis uniformément. Cependant, l’inconvénient du tri par compartiments est qu’il occupe de l’espace mémoire supplémentaire, ce qui peut ne pas être applicable lorsque la consommation de mémoire est importante. Dans les applications pratiques, il est essentiel de choisir un algorithme de tri approprié basé sur la distribution des éléments à trier.

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 de ce site Web
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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment télécharger Deepseek Xiaomi Comment télécharger Deepseek Xiaomi Feb 19, 2025 pm 05:27 PM

Comment télécharger Deepseek Xiaomi

Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants Jun 03, 2024 pm 01:25 PM

Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants

Quels sont les avantages et les inconvénients des modèles ? Quels sont les avantages et les inconvénients des modèles ? May 08, 2024 pm 03:51 PM

Quels sont les avantages et les inconvénients des modèles ?

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs Jul 01, 2024 am 07:22 AM

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs

Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution Jun 06, 2024 pm 12:33 PM

Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution

Comment lui demandez-vous Deepseek Comment lui demandez-vous Deepseek Feb 19, 2025 pm 04:42 PM

Comment lui demandez-vous Deepseek

Quel logiciel est NET40 ? Quel logiciel est NET40 ? May 10, 2024 am 01:12 AM

Quel logiciel est NET40 ?

Comment rechercher Deepseek Comment rechercher Deepseek Feb 19, 2025 pm 05:18 PM

Comment rechercher Deepseek

See all articles