CURSO DE PYTHON 3.X

3.1.- Comparativo de Aplicación y Desarrollo de código en Python 3.x              Ejemplos Prácticos II


DIFERENTES TIPOS DE ORDENAMIENTO EN PYTHON 3.X

Que tipo de ordenación existen en Python 3.x.

Conceptos y ejemplos prácticos varios de cada caso

 

     En Python 3.x, hay varios tipos de ordenación que se pueden aplicar a diferentes tipos de datos.

     Aquí te muestro algunos de los más comunes junto con ejemplos prácticos:

     # Output: es Salidas por Pantalla

 

Ordenación por valor numérico o alfabético:

Este tipo de ordenación clasifica los elementos de una lista en función de sus valores numéricos o alfabéticos.

# Ordenación numérica

nums = [5, 2, 9, 1, 7]

nums.sort()

print(nums)  # Output: [1, 2, 5, 7, 9]

 

# Ordenación alfabética

words = ['banana', 'apple', 'orange', 'grape']

words.sort()

print(words)  # Output: ['apple', 'banana', 'grape', 'orange']

 

Ordenación personalizada con función key:

Permite especificar una función de clave (key function) que define el criterio de ordenación.

# Ordenación por longitud de cadena

words = ['banana', 'apple', 'orange', 'grape']

words.sort(key=len)

print(words)  # Output: ['apple', 'banana', 'grape', 'orange']

 

# Ordenación por valor absoluto

nums = [-5, 2, -9, 1, 7]

nums.sort(key=abs)

print(nums)  # Output: [1, 2, -5, 7, -9]

 

Ordenación inversa:

Ordena los elementos en orden descendente en lugar de ascendente.

# Ordenación inversa

nums = [5, 2, 9, 1, 7]

nums.sort(reverse=True)

print(nums)  # Output: [9, 7, 5, 2, 1]

 

Ordenación personalizada con función de comparación:

Utiliza una función de comparación personalizada para definir el orden.

# Ordenación de cadenas basada en la cantidad de vocales

def vowel_count(word):

    vowels = 'aeiou'

    return sum(1 for char in word if char in vowels)

 

words = ['banana', 'apple', 'orange', 'grape']

words.sort(key=vowel_count)

print(words)  # Output: ['grape', 'apple', 'banana', 'orange']

 

Ordenación estable:

Mantiene el orden relativo de los elementos con valores iguales.

# Ordenación estable

students = [('Alice', 23), ('Bob', 25), ('Alice', 20), ('Bob', 22)]

students.sort()

print(students)  # Output: [('Alice', 20), ('Alice', 23), ('Bob', 22), ('Bob', 25)]

 

Estos son solo algunos ejemplos de los diferentes tipos de ordenación que puedes aplicar en Python 3.x. Dependiendo de tus necesidades específicas, puedes elegir la más adecuada para tu caso particular.

 

OTROS TIPOS DE ORDENAMIENTO EN PYTHOGN 3.X

  • Ordenamiento por Selección
  • Ordenamiento por inserción
  • Ordenamiento por intercambio o burbuja
  • Ordenamiento rápido o quicksort
  • Ordenamiento por mezcla o merget sort 

Ordenamiento por Selección:

Este algoritmo encuentra repetidamente el elemento mínimo de la lista y lo coloca al principio.  Luego, repite el proceso con el resto de la lista.

def selection_sort(arr):

    n = len(arr)

    for i in range(n):

        min_idx = i

        for j in range(i + 1, n):

            if arr[j] < arr[min_idx]:

                min_idx = j

        arr[i], arr[min_idx] = arr[min_idx], arr[i]

 

nums = [64, 25, 12, 22, 11]

selection_sort(nums)

print("Lista ordenada por selección:", nums)

 

SALIDA POR PANTALLA

 

Ordenamiento por Inserción:

En este algoritmo, cada elemento de la lista se compara e inserta en su posición correcta, de izquierda a derecha.

def insertion_sort(arr):

    for i in range(1, len(arr)):

        key = arr[i]

        j = i - 1

        while j >= 0 and key < arr[j]:

            arr[j + 1] = arr[j]

            j -= 1

        arr[j + 1] = key

 

nums = [12, 11, 13, 5, 6]

insertion_sort(nums)

print("Lista ordenada por inserción:", nums)

 

 SALIDA POR PANTALLA

 

Ordenamiento por Intercambio o Burbuja:

Este algoritmo compara repetidamente pares adyacentes de elementos y los intercambia si están en el orden incorrecto.

def bubble_sort(arr):

    n = len(arr)

    for i in range(n - 1):

        for j in range(0, n - i - 1):

            if arr[j] > arr[j + 1]:

                arr[j], arr[j + 1] = arr[j + 1], arr[j]

 

nums = [64, 34, 25, 12, 22, 11, 90]

bubble_sort(nums)

print("Lista ordenada por burbuja:", nums)

 

 SALIDA POR PANTALLA

 

Ordenamiento rápido o Quicksort:

Este algoritmo divide la lista en subgrupos más pequeños basados en un elemento pivote, luego ordena recursivamente cada subgrupo.

def quicksort(arr):

    if len(arr) <= 1:

        return arr

    pivot = arr[len(arr) // 2]

    left = [x for x in arr if x < pivot]

    middle = [x for x in arr if x == pivot]

    right = [x for x in arr if x > pivot]

    return quicksort(left) + middle + quicksort(right)

 

nums = [12, 4, 5, 6, 7, 3, 1, 15]

sorted_nums = quicksort(nums)

print("Lista ordenada por quicksort:", sorted_nums)

 

 SALIDA POR PANTALLA

 

Ordenamiento por Mezcla o Mergesort:

En este algoritmo, la lista se divide en mitades recursivamente hasta que cada mitad tenga un solo elemento, luego se fusionan las mitades en orden.

def merge_sort(arr):

    if len(arr) > 1:

        mid = len(arr) // 2

        L = arr[:mid]

        R = arr[mid:]

        merge_sort(L)

        merge_sort(R)

        i = j = k = 0

        while i < len(L) and j < len(R):

            if L[i] < R[j]:

                arr[k] = L[i]

                i += 1

            else:

                arr[k] = R[j]

                j += 1

            k += 1

        while i < len(L):

            arr[k] = L[i]

            i += 1

            k += 1

        while j < len(R):

            arr[k] = R[j]

            j += 1

            k += 1

 

nums = [38, 27, 43, 3, 9, 82, 10]

merge_sort(nums)

print("Lista ordenada por mergesort:", nums)

 

SALIDA POR PANTALLA 

 

     Estos son ejemplos básicos de cómo implementar y utilizar cada algoritmo de ordenamiento en Python 3.x.

     Cada uno tiene sus propias ventajas y desventajas en términos de eficiencia y complejidad, por lo que es importante elegir el más adecuado según el tamaño y la naturaleza de los datos a ordenar.