


Partagez des exemples de tri couramment utilisés en Python
Stabilité et importance de l'algorithme de tri
Tri des bulles
Complexité et stabilité Propriétés
Tri par sélection
Tri par insertion
-
Tri par colline
Tri rapide
Comparaison de l'efficacité des algorithmes de tri courants
Stabilité et importance des algorithmes de tri
Dans la séquence à trier, il y a des enregistrements avec les mêmes mots-clés, et l'ordre relatif de ces enregistrements reste inchangé après le tri, alors l'algorithme de tri est stable.
Le tri instable ne peut pas terminer le tri de plusieurs mots-clés. Par exemple, pour le tri des nombres entiers, plus le nombre de chiffres est élevé, plus la priorité est élevée, triant des chiffres élevés vers les chiffres faibles. Ensuite, le tri de chaque bit nécessite un algorithme stable, sinon le résultat correct ne pourra pas être obtenu.
C'est-à-dire Lorsque plusieurs mots-clés doivent être triés plusieurs fois, un algorithme stable doit être utilisé
Tri à bulles

def bubble_sort(alist): """ 冒泡排序 """ if len(alist) <= 1: return alist for j in range(len(alist)-1,0,-1): for i in range(j): if alist[i] > alist[i+1]: alist[i], alist[i+1] = alist[i+1], alist[i] return alist
Complexité et stabilité
Complexité temporelle optimale : (O(n)) Le parcours ne trouve aucun élément pouvant être échangé et le tri se termine
Pire complexité temporelle : (O(n^2))
Stabilité : Stable
Tri par sélection
Le tri par sélection est un algorithme de tri simple et intuitif. Voici comment cela fonctionne. Tout d'abord, recherchez le plus petit (grand) élément de la séquence non triée et stockez-le au début de la séquence triée. Ensuite, continuez à rechercher le plus petit (grand) élément parmi les éléments non triés restants, puis placez-le à la fin de la séquence. séquence triée. Et ainsi de suite jusqu'à ce que tous les éléments soient triés.
Tri par insertion
Le tri par insertion construit une séquence ordonnée. Pour les données non triées, parcourez d'arrière en avant dans la séquence triée pour trouver la position correspondante et insérez-la. Lors de la mise en œuvre du tri par insertion, pendant le processus de numérisation d'arrière en avant, les éléments triés doivent être déplacés à plusieurs reprises et progressivement vers l'arrière pour fournir un espace d'insertion pour les derniers éléments.

def insert_sort(alist): """ 插入排序 """ n = len(alist) if n <= 1: return alist # 从第二个位置,即下表为1的元素开始向前插入 for i in range(1, n): j = i # 向前向前比较,如果小于前一个元素,交换两个元素 while alist[j] < alist[j-1] and j > 0: alist[j], alist[j-1] = alist[j-1], alist[j] j-=1 return alist
Complexité et stabilité
Complexité temporelle optimale : O((n)) (arrangement par ordre croissant, le la séquence est déjà par ordre croissant)
Pire complexité temporelle : O((n^2))
Stabilité : Stable
Shell Sort
Shell Sort est une amélioration du tri par insertion, et le tri n'est pas stable. Le tri Hill consiste à regrouper les enregistrements selon un certain incrément de l'indice, et à utiliser l'algorithme de tri par insertion directe pour trier chaque groupe à mesure que l'incrément diminue progressivement, chaque groupe contient de plus en plus de mots-clés ; est réduit à 1, le fichier entier est divisé en un seul groupe et l'algorithme se termine.
def shell_sort(alist): n = len(alist) gap = n//2 # gap 变化到0之前,插入算法之行的次数 while gap > 0: # 希尔排序, 与普通的插入算法的区别就是gap步长 for i in range(gap,n): j = i while alist[j] < alist[j-gap] and j > 0: alist[j], alist[j-gap] = alist[j-gap], alist[j] j-=gap gap = gap//2 return alist
Complexité et stabilité
Complexité temporelle optimale : (O(n^{1.3})) (il n'est pas nécessaire de le commander)
Pire complexité temporelle : (O(n^2))
Stabilité : instable
Tri rapide
Quicksort (Quicksort) divise les données à trier en deux parties indépendantes en une seule passe de tri. Toutes les données d'une partie sont plus petites que toutes les données de l'autre partie, puis utilisez cette méthode pour trier rapidement. les deux parties des données respectivement. L'ensemble du processus de tri peut être effectué de manière récursive, de sorte que l'ensemble des données devienne une séquence ordonnée.
Les étapes sont :
Choisir un élément de la séquence, appelé le "pivot"
Re In a séquence triée, tous les éléments plus petits que la valeur de base sont placés devant la base, et tous les éléments plus grands que la valeur de base sont placés derrière la base (le même nombre peut aller de chaque côté). Après cette partition, la donnée se trouve au milieu de la séquence. C'est ce qu'on appelle une opération de partition.
Trier récursivement le sous-tableau d'éléments plus petits que la valeur de base et le sous-tableau d'éléments supérieurs à la valeur de base.
Le cas inférieur de la récursion est lorsque la taille de la séquence est zéro ou un, c'est-à-dire qu'elle a toujours été triée. Bien qu'il continue à se répéter, cet algorithme finira toujours, car à chaque itération (itération), il mettra au moins un élément à sa position finale.
Comparaison de l'efficacité des algorithmes de tri courants

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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Vous pouvez apprendre les concepts de programmation de base et les compétences de Python dans les 2 heures. 1. Apprenez les variables et les types de données, 2. Flux de contrôle maître (instructions et boucles conditionnelles), 3. Comprenez la définition et l'utilisation des fonctions, 4. Démarrez rapidement avec la programmation Python via des exemples simples et des extraits de code.

Python est largement utilisé dans les domaines du développement Web, de la science des données, de l'apprentissage automatique, de l'automatisation et des scripts. 1) Dans le développement Web, les cadres Django et Flask simplifient le processus de développement. 2) Dans les domaines de la science des données et de l'apprentissage automatique, les bibliothèques Numpy, Pandas, Scikit-Learn et Tensorflow fournissent un fort soutien. 3) En termes d'automatisation et de script, Python convient aux tâches telles que les tests automatisés et la gestion du système.

Il est impossible de visualiser le mot de passe MongoDB directement via NAVICAT car il est stocké sous forme de valeurs de hachage. Comment récupérer les mots de passe perdus: 1. Réinitialiser les mots de passe; 2. Vérifiez les fichiers de configuration (peut contenir des valeurs de hachage); 3. Vérifiez les codes (May Code Hardcode).

En tant que professionnel des données, vous devez traiter de grandes quantités de données provenant de diverses sources. Cela peut poser des défis à la gestion et à l'analyse des données. Heureusement, deux services AWS peuvent aider: AWS Glue et Amazon Athena.

Les étapes pour démarrer un serveur Redis incluent: Installez Redis en fonction du système d'exploitation. Démarrez le service Redis via Redis-Server (Linux / MacOS) ou Redis-Server.exe (Windows). Utilisez la commande redis-Cli Ping (Linux / MacOS) ou redis-Cli.exe Ping (Windows) pour vérifier l'état du service. Utilisez un client redis, tel que redis-cli, python ou node.js pour accéder au serveur.

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

Question: Comment afficher la version Redis Server? Utilisez l'outil de ligne de commande redis-Cli --version pour afficher la version du serveur connecté. Utilisez la commande Info Server pour afficher la version interne du serveur et devez analyser et retourner des informations. Dans un environnement de cluster, vérifiez la cohérence de la version de chaque nœud et peut être vérifiée automatiquement à l'aide de scripts. Utilisez des scripts pour automatiser les versions de visualisation, telles que la connexion avec les scripts Python et les informations d'impression.

La sécurité du mot de passe de Navicat repose sur la combinaison de cryptage symétrique, de force de mot de passe et de mesures de sécurité. Des mesures spécifiques incluent: l'utilisation de connexions SSL (à condition que le serveur de base de données prenne en charge et configure correctement le certificat), à la mise à jour régulièrement de NAVICAT, en utilisant des méthodes plus sécurisées (telles que les tunnels SSH), en restreignant les droits d'accès et, surtout, à ne jamais enregistrer de mots de passe.
