How to Sort the Odd in Python

The challenge

You will be given an array of numbers. You have to sort the odd numbers in ascending order while leaving the even numbers at their original positions.

Examples

[7, 1] => [1, 7] [5, 8, 6, 3, 4] => [3, 8, 6, 5, 4] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] => [1, 8, 3, 6, 5, 4, 7, 2, 9, 0]
Code language: Python (python)

The solution in Python code

Option 1:

def sort_array(arr): odds = sorted((x for x in arr if x%2 != 0), reverse=True) return [x if x%2==0 else odds.pop() for x in arr]
Code language: Python (python)

Option 2:

def sort_array(source_array): result = sorted([l for l in source_array if l % 2 == 1]) for index, item in enumerate(source_array): if item % 2 == 0: result.insert(index, item) return result
Code language: Python (python)

Option 3:

def sort_array(source_array): odd = sorted(list(filter(lambda x: x % 2, source_array))) l, c = [], 0 for i in source_array: if i in odd: l.append(odd[c]) c += 1 else: l.append(i) return l
Code language: Python (python)

Test cases to validate our solution

test.assert_equals(sort_array([5, 3, 2, 8, 1, 4]), [1, 3, 2, 8, 5, 4]) test.assert_equals(sort_array([5, 3, 1, 8, 0]), [1, 3, 5, 8, 0]) test.assert_equals(sort_array([]),[])
Code language: Python (python)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments