Răspuns :
#!/usr/bin/env python
def specialSort(v):
odd = []
even = []
for val in v:
if val % 2 == 0:
even = even + [val]
else:
odd = odd + [val]
bool__ = True
while bool__ == True:
bool__ = False
for i in range(0, len(odd) - 1):
if(odd[i] > odd[i+1]):
temp = odd[i]
odd[i] = odd[i+1]
odd[i+1] = temp
bool__ = True
bool__ = True
while bool__ == True:
bool__ = False
for i in range(0, len(even) - 1):
if(even[i] < even[i+1]):
temp = even[i]
even[i] = even[i+1]
even[i+1] = temp
bool__ = True
# varianta 1: elementele impare in ordine crescatoare urmate de elementele pare in ordine descrescatoare
#return odd + even # Asa trebuie sa arate vectorul ??
# varianta 2: punem elementele inapoi in lista initiala, in ordinea rezultata dupa sortari
k1 = 0
k2 = 0
for i in range(0, len(v)-1):
if v[i] % 2 == 0:
v[i] = even[k1]
k1 = k1 + 1
else:
v[i] = odd[k2]
k2 = k2 + 1
return v
Am folosit 2 variante, foloseste-o pe cea de care ai nevoie si pune-o pe cealalta in comentarii.
(Nu pot pune fisierul ca atasament asa ca il poti gasi aici: https://pastebin.com/ZVafD9Dm)
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!