0914 - Half Sort 1
Cerință[edit | edit source]
Se dă un vector cu n elemente numere întregi, n fiind număr par. Să se ordoneze crescător elementele din prima jumătate a vectorului și descrescător elementele din a doua jumătate.
Se vor defini și apela următoarele subprograme:
citire, care citește valoarea lui n și cele n elemente ale tabloului
afisare, care afișează elementele tabloului, separate prin exact un spațiu
sortare, care ordonează elementele vectorului cuprinse între doi indici transmiși ca parametru.
Date de intrare[edit | edit source]
Fişierul de intrare halfsort1.in conţine pe prima linie numărul n si pe a doua linie n numere întregi separate prin spaţii.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Fişierul de ieşire halfsort1.out va conţine pe prima linie cele n elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții de precizări[edit | edit source]
- 1 ⩽ n ⩽ 1000
- valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât 1.000.000.00
Exemplul 1[edit | edit source]
- Intrare
- 6
- 8 2 9 4 5 7
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 2 8 9 7 5 4
Exemplul 2[edit | edit source]
- Intrare
- 6
- 2 4 3 9 5 8
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 2 3 4 9 8 5
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1"> def validare(n, a):
# Verifică dacă n este de tip int, este mai mare decât 1, mai mic sau egal cu 100 și toate elementele din a sunt de tip int return isinstance(n, int) and n > 1 and n <= 100 and all(isinstance(x, int) for x in a)
def sortare(n, a, st, dr, ch):
if ch == 'c': # Sortare crescătoare (crescent) for i in range(st, dr): for j in range(i + 1, dr): if a[i] > a[j]: a[i], a[j] = a[j], a[i] else: # Sortare descrescătoare (descendent) for i in range(st, dr): for j in range(i + 1, dr): if a[i] < a[j]: a[i], a[j] = a[j], a[i]
def afisare(n, a):
# Afișează elementele listei a for i in range(n): print(a[i], end=' ')
if __name__ == "__main__":
n = 0 a = [] # Citire date de intrare n = int(input("Introduceți numărul de elemente: ")) for i in range(n): a.append(int(input(f"Introduceți elementul {i + 1}: "))) # Verificare validitate date de intrare if validare(n, a): print("Datele introduse corespund restricțiilor impuse.") # Sortare sortare(n, a, 0, n // 2 + n % 2, 'c') sortare(n, a, n // 2 + n % 2, n, 'd') # Afisare rezultat print("Lista sortată:") afisare(n, a) else: print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>