You are given an array of integers. Your task is to sort odd numbers within the array in ascending order, and even numbers in descending order.
Note that zero is an even number. If you have an empty array, you need to return it.
Pentru cei care stiu engleza :)
Solutii acceptate: js, pythonsi Ruby
Răspunsuri la întrebare
#!/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)