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:
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.