0914 - Half Sort 1
Cerință
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
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
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
- 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
- Intrare
- 6
- 8 2 9 4 5 7
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 2 8 9 7 5 4
Exemplul 2
- 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
<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>