1025-MergeSort: Difference between revisions
Larisa.Chiș (talk | contribs) Pagină nouă: == Cerința == Se dă un șir cu n elemente, numere întregi. Folosind metoda MergeSort (Sortare prin interclasare), ordonați crescător elementele acestui șir. == Date de intrare == Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului. == Date de ieșire == Programul va afișa pe ecran elementele șirului sortat, separate prin exact un spațiu. == Restricții și precizări == 1 ≤ n ≤ 100.000 elementele șirului vor fi cuprin... |
Larisa.Chiș (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
== Cerința == | |||
Se dă un șir cu n elemente, numere întregi. Folosind metoda MergeSort (Sortare prin interclasare), ordonați crescător elementele acestui șir. | Se dă un șir cu n elemente, numere întregi. Folosind metoda MergeSort (Sortare prin interclasare), ordonați crescător elementele acestui șir. | ||
== Date de intrare == | |||
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului. | Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului. | ||
== Date de ieșire == | |||
Programul va afișa pe ecran elementele șirului sortat, separate prin exact un spațiu. | Programul va afișa pe ecran elementele șirului sortat, separate prin exact un spațiu. | ||
== Restricții și precizări == | |||
1 ≤ n ≤ 100.000 | 1 ≤ n ≤ 100.000 | ||
elementele șirului vor fi cuprinse între -1.000.000.000 și 1.000.000.000 | elementele șirului vor fi cuprinse între -1.000.000.000 și 1.000.000.000 | ||
== Exemplu == | |||
Intrare | Intrare | ||
Line 23: | Line 23: | ||
-4 -4 -4 -3 -1 -1 0 1 3 3 9 10 | -4 -4 -4 -3 -1 -1 0 1 3 3 9 10 | ||
== Rezolvare == | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Latest revision as of 16:00, 7 January 2023
Cerința[edit | edit source]
Se dă un șir cu n elemente, numere întregi. Folosind metoda MergeSort (Sortare prin interclasare), ordonați crescător elementele acestui șir.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran elementele șirului sortat, separate prin exact un spațiu.
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 100.000 elementele șirului vor fi cuprinse între -1.000.000.000 și 1.000.000.000
Exemplu[edit | edit source]
Intrare
12 10 0 -1 -3 1 -4 9 3 -1 -4 3 -4
Ieșire
-4 -4 -4 -3 -1 -1 0 1 3 3 9 10
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
def mergeSort(array):
if len(array) > 1:
# r is the point where the array is divided into two subarrays r = len(array)//2 L = array[:r] M = array[r:]
# Sort the two halves mergeSort(L) mergeSort(M)
i = j = k = 0
# Until we reach either end of either L or M, pick larger among # elements L and M and place them in the correct position at A[p..r] while i < len(L) and j < len(M): if L[i] < M[j]: array[k] = L[i] i += 1 else: array[k] = M[j] j += 1 k += 1
# When we run out of elements in either L or M, # pick up the remaining elements and put in A[p..r] while i < len(L): array[k] = L[i] i += 1 k += 1
while j < len(M): array[k] = M[j] j += 1 k += 1
- Print the array
def printList(array):
for i in range(len(array)): print(array[i], end=" ") print()
- Driver program
if __name__ == '__main__':
array_to_be_sorted = input('Introduceti o lista de numere, separate prin spatiu:') array_to_be_sorted = array_to_be_sorted.split()
mergeSort(array_to_be_sorted)
print("Sorted array is: ") printList(array_to_be_sorted)
</syntaxhighlight>