logo

Python-program för Merge Sort

Merge Sortera är en Söndra och erövra algoritm. Den delar inmatningsmatrisen i två halvor, kallar sig för de två halvorna och slår sedan samman de två sorterade halvorna. Merge()-funktionen används för att slå samman två halvor. Sammanfogningen (arr, l, m, r) är nyckelprocessen som antar att arr[l..m] och arr[m+1..r] sorteras och slår samman de två sorterade sub-arrayerna till en.

Python-program för Merge Sort

Den tillhandahållna Pytonorm kod implementerar Merge Sort-algoritmen, en sorteringsteknik för dela och erövra. Den delar upp en array i mindre underarrayer, sorterar dem individuellt och slår sedan samman dem igen för att skapa en sorterad array. Koden innehåller två huvudfunktioner: merge, ansvarig för att slå samman två subarrayer, och mergeSort, som rekursivt delar och sorterar arrayen. Sammanfogningsfunktionen kombinerar två sorterade subarrayer till en enda sorterad array. MergeSort-funktionen delar rekursivt arrayen på mitten tills varje underarray har ett enda element, och slår sedan samman dem för att uppnå det slutliga sorterade resultatet. Exemplet sorterar en array med hjälp av Merge Sort och skriver ut både den initiala och sorterade arrayen.

Python3






konkat java-sträng

# 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>

>

>

Produktion

Given array is 12 11 13 5 6 7 Sorted array is 5 6 7 11 12 13>

Tidskomplexitet: O(n*log(n))

Hjälputrymme: På)

kali linux kommandon

Se hela artikeln om Sammanfoga sortering för mer detaljer!