👤

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ă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)