Programma Python per l'ordinamento Merge
Unisci ordinamento è un file Dividere e conquistare algoritmo. Divide l'array di input in due metà, chiama se stesso per le due metà e quindi unisce le due metà ordinate. La funzione merge() viene utilizzato per unire due metà. Il merge(arr, l, m, r) è un processo chiave che presuppone che arr[l..m] e arr[m+1..r] siano ordinati e unisce i due sottoarray ordinati in uno solo.
Programma Python per l'ordinamento Merge
Il fornito Pitone il codice implementa l'algoritmo Merge Sort, una tecnica di ordinamento divide et impera. Suddivide un array in sottoarray più piccoli, li ordina individualmente e quindi li unisce nuovamente per creare un array ordinato. Il codice include due funzioni principali: merge, responsabile dell'unione di due sottoarray, e mergeSort, che divide e ordina ricorsivamente l'array. La funzione di unione combina due sottoarray ordinati in un unico array ordinato. La funzione mergeSort divide ricorsivamente l'array a metà finché ogni sottoarray ha un singolo elemento, quindi li unisce per ottenere il risultato ordinato finale. L'esempio ordina un array utilizzando Merge Sort e stampa sia l'array iniziale che quello ordinato.
Python3
# Python program for implementation of MergeSort> # Merges two subarrays of arr[].> # First subarray is arr[l..m]> # Second subarray is arr[m+1..r]> def> merge(arr, l, m, r):> > n1> => m> -> l> +> 1> > n2> => r> -> m> > # create temp arrays> > L> => [> 0> ]> *> (n1)> > R> => [> 0> ]> *> (n2)> > # Copy data to temp arrays L[] and R[]> > for> i> in> range> (> 0> , n1):> > L[i]> => arr[l> +> i]> > for> j> in> range> (> 0> , n2):> > R[j]> => arr[m> +> 1> +> j]> > # Merge the temp arrays back into arr[l..r]> > i> => 0> # Initial index of first subarray> > j> => 0> # Initial index of second subarray> > k> => l> # Initial index of merged subarray> > while> i and j if L[i] <= R[j]: arr[k] = L[i] i += 1 else: arr[k] = R[j] j += 1 k += 1 # Copy the remaining elements of L[], if there # are any while i arr[k] = L[i] i += 1 k += 1 # Copy the remaining elements of R[], if there # are any while j arr[k] = R[j] j += 1 k += 1 # l is for left index and r is right index of the # sub-array of arr to be sorted def mergeSort(arr, l, r): if l # Same as (l+r)//2, but avoids overflow for # large l and h m = l+(r-l)//2 # Sort first and second halves mergeSort(arr, l, m) mergeSort(arr, m+1, r) merge(arr, l, m, r) # Driver code to test above arr = [12, 11, 13, 5, 6, 7] n = len(arr) print('Given array is') for i in range(n): print('%d' % arr[i],end=' ') mergeSort(arr, 0, n-1) print('
Sorted array is') for i in range(n): print('%d' % arr[i],end=' ') # This code is contributed by Mohit Kumra> |
Produzione
Given array is 12 11 13 5 6 7 Sorted array is 5 6 7 11 12 13
Complessità temporale: O(n*log(n))
Spazio ausiliario: SU)
Si prega di fare riferimento all'articolo completo su Unisci ordinamento per ulteriori dettagli!