Ocho algoritmos de ordenación lograr pitón

Un ordenamiento de burbuja

algoritmo de ordenamiento de burbuja funciona como sigue:

Comparación de elementos adyacentes. Si el primero es mayor que el segundo, los dos de ellos intercambiaron.
Hacer el mismo trabajo para cada par de elementos adyacentes, desde el principio hasta el final de la primera a la última pareja. Una vez hecho esto, el último elemento es el número más grande.
Repita estos pasos para todos los elementos, excepto el último.
Continúa repetir los pasos anteriores para cada vez menos y menos elementos, un par de números hasta que no hay necesidad de comparar.
Por encima de extracto de Wikipedia

la implementación del código:

def bubble_sort (numberlist):
longitud = len (numberlist)
para i en el rango (longitud):
para j en el rango de (1, longitud - i):
si numberlist [j - 1]> numberlist [j]:
numberlist [j], numberlist [j - 1] = numberlist [j - 1], numberlist [j]
numberlist retorno
二,选择排序

Ordenar la selección (selección especie) es un algoritmo de clasificación directa. Funciona de la siguiente manera. En primer lugar, encontrar la secuencia más pequeño de elemento sin clasificar (grande), la posición de inicio se almacena en la secuencia ordenada, y luego continuar a encontrar el elemento mínimo (grande) de los elementos restantes de no seleccionados y ordenados en el extremo de la secuencia. Y así sucesivamente, hasta que se clasifican todos los elementos.

Por encima de extracto de Wikipedia

la implementación del código:

def findSmallest (arr): # para averiguar el elemento más pequeño de la matriz, devuelve el índice del elemento más pequeño.
ARR = más pequeña [0]
smallest_index = 0
para i in range (1, Len (ARR).):
IF más pequeño> ARR [I]:
mas pequeña ARR = [I]
smallest_index = I
regreso smallest_index

def SelectSort (arr):
newArr = []
mientras arr:
más pequeño = findSmallest (arr)
newArr.append (arr.pop (el más pequeño))
newArr retorno

En tercer lugar, una especie de inserción

pasos

Comenzando con el primer elemento, que puede ser considerado han sido ordenados
Obtiene la siguiente elemento de la exploración hacia delante en la secuencia de elementos ha sido ordenadas en
si el elemento (ordenadas) es mayor que el nuevo elemento, el elemento a la siguiente posición
repita el paso 3 hasta que encuentre la posición de los elementos ordenados de menos de o igual al nuevo elemento
después de que el elemento se inserta en la nueva posición
repita los pasos 2-5
de arriba extracto de Wikipedia

la implementación del código

def insert_sort (datos):
para k en el rango de (1, Len (datos)):
cur = datos [k]
j = k
, mientras que j> 0 y los datos [j - 1]> cur:
datos [j] = datos [j - 1]
j - = 1
datos [j] = cur
datos de retorno
四,希尔排序

Shell ordenar a través de todos los elementos que se van a comparar se divide en varias áreas para mejorar el rendimiento de ordenación por inserción. Esto permite que un elemento de una sola vez puede ser un gran paso adelante hacia la posición final. Luego, el algoritmo más y luego tomar pequeños pasos para clasificar, el último paso es un algoritmo de ordenación por inserción ordinaria, pero a este paso, es necesario ordenar los datos ya habían sido reservado casi un bien (esta inserción momento especie más rápido).

Por encima de extracto de Wikipedia

la implementación del código:

def shell_sort (numberlist):
longitud = len (numberlist)
hueco = longitud // 2
mientras Gap> 0:
para i en el rango (GAP, longitud):
temp = numberlist [i]
j = i
, mientras que j> = brecha y numberlist [ j - brecha]> temp:
numberlist [j] = numberlist [j - brecha]
j - = brecha
numberlist [j] = temp
hueco = brecha // 2
retorno numberlist
五,归并排序

Principio es como sigue (suponiendo elementos de la secuencia consenso {displaystyle n}):

La secuencia de cada dos números adyacentes de combinación de operación, un {ceil displaystyle (n / 2) } secuencias, cada secuencia que comprende dos Ordenada / un elemento
si el número de secuencia no es un caso la secuencia anterior se fusionará de nuevo, formando {ceil displaystyle (n / 4) } secuencias, cada secuencia que comprende cuatro / tres elementos
repita el paso 2 hasta que todos los elementos ordenados, es decir, el número de secuencia es 1
o más extracto de Wikipedia

Código es el siguiente:

def de combinación (izquierda, derecha):
resultado = []
, mientras que a la izquierda y derecha:
si se deja [0] <derecho [0]:
result.append (left.pop (0))
más:
result.append (right.pop (0 ))
si se deja:
resultado + = izquierda
si la derecha:
resultado + = derecha
resultado devuelto

def merge_sort (numberlist):
si len (numberlist) <= 1:
retorno numberlist
mediados = len (numberlist) // 2
izquierda = numberlist [: mediados]
derecha = numberlist [mediados:]

left = merge_sort(left)
right = merge_sort(right)
return merge(left, right)

En sexto lugar, ordenación rápida

Escoja el número de columnas en un elemento, llamado "de referencia" (pivote),
columnas de reordenamiento, todo menor que el valor de referencia se coloca en frente del elemento de referencia, todas más grandes que los elementos de valor de referencia colocados detrás de la referencia (el mismo número puede ser a cada lado). Después del final de esta división, en una posición intermedia en la secuencia de referencia. Esta división se llama (partición) operación.
Recursivamente (recursivamente) que el valor de referencia el número de columnas y el sub-elemento es mayor que el valor de referencia de la columna número el elemento secundario.
Recursiva hasta el fondo, el tamaño es el número de columnas o un cero, que ya está ordenada mejor. Este algoritmo va a terminar, porque en cada iteración (iteración), que se coloca al menos un elemento en su posición final para ir.

Por encima de extracto de Wikipedia

Código es el siguiente:

def página_web (array):
si len (array) <2:
array de retorno
más:
pivote = array [0]
menos = [i para i en array [1:] si i <= pivote]
mayores = [i para i en la matriz [1:] si i> pivote]
página_web retorno (menos) + [pivote] + página_web (mayor)
七,堆排序

En términos de instrucciones en orden ascendente, la matriz en la pila máxima (Max-Heap Heap), que es una propiedades de volumen conocer el máximo (Max-Heap propiedad) de un árbol binario: Para cada nodo, excepto la raíz i, A [parent (i)] ≥ A [i].

Repetir el valor máximo tomado desde el nodo de pila máxima (el nodo raíz y el último cambio, el último nodo de conmutación después de la eliminación de la pila), y así el mantenimiento de la máxima acumulación de las propiedades a granel residuales.

def heap_sort (numberlist):
longitud = len (numberlist)
sift_down def (inicio, final):
root = iniciar
while True:
niño = 2 * raíz + 1
si el niño> final:
ruptura
si el niño + 1 <= extremo y numberlist [niño ] <numberlist [niño + 1]:
niño + = 1
si numberlist [root] <numberlist [niño]:
numberlist [root], numberlist [niño] = numberlist [niño], numberlist [root]
root = niño
más:
descanso

Creación de almacenamiento dinámico máximo

for start in range((length - 2) // 2, -1, -1):
    sift_down(start, length - 1)

heapsort

for end in range(length - 1, 0, -1):
    numberlist[0], numberlist[end] = numberlist[end], numberlist[0]
    sift_down(0, end - 1)

return numberlist

Ocho, contando especie
por encima de extracto de Wikipedia
código es el siguiente:

def counting_sort (numberlist, MAXNUMBER): # MAXNUMBER el máximo de la matriz
longitud = len (numberlist) # para ordenarse longitud de la matriz
b = [0 para i en el rango (longitud)] # establece la secuencia de salida, se inicializa a 0
C = [ 0 para i en el rango (MAXNUMBER + 1)] # conjunto tecnología de secuencia se inicializa a 0
para J en numberlist ,:
C [J] = C [J] + 1.
para I en el rango de (1, len ©.):
C [I] = C [I] + C [I -. 1]
para J en numberlist ,:
B [C [J] -. 1] = J
C [J] = C [J] -. 1
retorno B
de este artículo por referencia Wikipedia y ocho clasificación pitón algoritmo lograr compilaciones

Publicado 25 artículos originales · ganado elogios 0 · Vistas 6500

Supongo que te gusta

Origin blog.csdn.net/lynchyueliu/article/details/104515573
Recomendado
Clasificación