Maison >développement back-end >Tutoriel Python >Guide d'implémentation et d'optimisation du tri par sélection Python

Guide d'implémentation et d'optimisation du tri par sélection Python

WBOY
WBOYoriginal
2024-02-02 21:22:06729parcourir

Guide dimplémentation et doptimisation du tri par sélection Python

Étapes et méthodes d'optimisation du tri par sélection Python

Selection Sort est un algorithme de tri simple et intuitif. Son idée de base est de sélectionner à chaque fois l'élément le plus petit (ou le plus grand) parmi les éléments de données à trier, de le stocker au début de la séquence, puis de continuer à rechercher l'élément le plus petit (ou le plus grand) parmi les éléments non triés restants. , placé à la fin de la séquence triée. Répétez ce processus jusqu'à ce que tous les éléments de données à trier soient disposés.

Les étapes du tri par sélection peuvent être résumées comme suit :

  1. Parcourez la séquence à trier et marquez la position actuelle comme la position du plus petit élément.
  2. Trouvez un élément plus petit que le plus petit élément actuel à partir de l'élément derrière la position marquée et mettez à jour la position marquée.
  3. Échangez l'élément à la position marquée avec l'élément à la position minimale de l'élément.
  4. Utilisez l'élément après la position marquée comme nouvelle position de départ et répétez les étapes 2 et 3.

Les méthodes d'optimisation du tri par sélection sont :

  1. Dans chaque parcours, trouver l'élément minimum et l'élément maximum en même temps, et les échanger en même temps. Cela peut réduire le nombre d’échanges et améliorer l’efficacité du tri.
  2. Ajoutez un jugement. Si aucun échange n'a lieu pendant le processus de traversée, c'est-à-dire que le tri est terminé, le processus de tri sera terminé plus tôt.

Ce qui suit est un exemple de code de tri par sélection en Python :

def selection_sort(arr):
    n = len(arr)
    for i in range(n - 1):
        min_pos = i
        max_pos = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_pos]:
                min_pos = j
            if arr[j] > arr[max_pos]:
                max_pos = j
        if min_pos != i:
            arr[i], arr[min_pos] = arr[min_pos], arr[i]
        if max_pos == i:
            max_pos = min_pos
        if max_pos != n - 1 - i:
            arr[n - 1 - i], arr[max_pos] = arr[max_pos], arr[n - 1 - i]
        if min_pos == n - 1 - i:
            min_pos = max_pos
        if min_pos != i:
            arr[i], arr[min_pos] = arr[min_pos], arr[i]
    return arr

# 测试
arr = [64, 25, 12, 22, 11]
print("排序前:", arr)
sorted_arr = selection_sort(arr)
print("排序后:", sorted_arr)

Dans le code ci-dessus, la position de la variable min_pos 记录最小元素的位置,使用变量 max_pos 记录最大元素的位置。在每次遍历中,通过比较更新这两个位置,然后进行交换。在列表长度为奇数时,如果 min_posmax_pos que nous utilisons coïncide avec la position de départ, et nous devons vérifier et traiter la position échangée.

Ci-dessus sont les étapes et les méthodes d'optimisation du tri de sélection Python, ainsi que des exemples de code spécifiques. Bien que le tri par sélection soit simple, il est moins efficace et a une complexité temporelle de O(n^2). Par conséquent, dans les applications pratiques, si l’échelle de tri est grande, il est recommandé d’utiliser des algorithmes de tri plus efficaces, tels que le tri rapide ou le tri par fusion.

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