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