0180 - Sort Min Max
Cerința[edit | edit source]
Să se ordoneze crescător elementele dintr-un şir dat cuprinse între elementul de valoare maximă şi cel de valoare minimă.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale distincte, separate prin spaţii.
Date de ieșire[edit | edit source]
Programul afișează pe ecran elementele şirului după ordonare.
Restricții și precizări[edit | edit source]
- 0 < n ≤ 1000;
- elementele şirului sunt numere naturale mai mici decât 1.000.000;
Exemplul 1[edit | edit source]
- Intrare
- 5
- 10 20 15 7 12
- Ieșire
- 10 7 15 20 12
- Datele de intrare corespund restricțiilor impuse.
Exemplul 2[edit | edit source]
- Intrare
- 0
- 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 0180 - Sort Min Max
def min_max_pos(n, a):
min_val = float('inf') # initializam minimul cu o valoare mare max_val = float('-inf') # initializam maximul cu o valoare mica min_pos = 0 max_pos = 0 for i in range(n): if a[i] < min_val: min_val = a[i] min_pos = i if a[i] > max_val: max_val = a[i] max_pos = i if min_pos > max_pos: # verificam daca pozitia minima e mai mare decat pozitia maxima min_pos, max_pos = max_pos, min_pos # interschimbam pozitiile return min_pos, max_pos
def sort_min_max(n, a):
min_pos, max_pos = min_max_pos(n, a) # gasim pozitia minima si pozitia maxima for i in range(min_pos, max_pos): # parcurgem elementele din vector intre pozitia minima si # pozitia maxima for j in range(i+1, max_pos+1): # parcurgem elementele din vector intre pozitia i si # pozitia maxima if a[i] > a[j]: # daca elementul de pe pozitia i e mai mare decat cel de pe j a[i], a[j] = a[j], a[i] # interschimbam elementele
if __name__ == '__main__':
n = int(input("Introduceti numarul de elemente din vector: ")) a = list(map(int, input("Introduceti elementele vectorului: ").split())) # verificarea restrictiilor if 0 < n <= 1000 and all(1 <= x <= 10**6 for x in a): sort_min_max(n, a) # sortam elementele din vector intre pozitia minima si # pozitia maxima print("Vectorul sortat:") print(*a) # afisam vectorul sortat folosind * pentru a separa elementele cu spatiu print("Datele de intrare corespund restricțiilor impuse.") else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>