Skip to content

Commit f549fb9

Browse files
authored
Update sort-even-and-odd-indices-independently.py
1 parent 681b89a commit f549fb9

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

Python/sort-even-and-odd-indices-independently.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ def sortEvenOdd(self, nums):
1010
"""
1111
def partition(index, nums):
1212
for i in xrange(len(nums)):
13-
j = index(i)
14-
while nums[i] > 0:
15-
nums[i], nums[j] = nums[j], ~nums[i] # processed
13+
j = i
14+
while nums[i] >= 0:
1615
j = index(j)
16+
nums[i], nums[j] = nums[j], ~nums[i] # processed
1717
for i in xrange(len(nums)):
1818
nums[i] = ~nums[i] # restore values
1919

@@ -26,13 +26,10 @@ def inplace_counting_sort(nums, left, right, reverse=False): # Time: O(n)
2626
for i in xrange(1, len(count)):
2727
count[i] += count[i-1]
2828
for i in reversed(xrange(left, right+1)): # inplace but unstable sort
29-
if nums[i] < 0: # processed
30-
continue
31-
while i != left+count[nums[i]]-1:
29+
while nums[i] >= 0:
3230
count[nums[i]] -= 1
33-
nums[left+count[nums[i]]], nums[i] = ~nums[i], nums[left+count[nums[i]]]
34-
count[nums[i]] -= 1
35-
nums[i] = ~nums[i]
31+
j = left+count[nums[i]]
32+
nums[i], nums[j] = nums[j], ~nums[i]
3633
for i in xrange(left, right+1):
3734
nums[i] = ~nums[i] # restore values
3835
if reverse: # unstable
@@ -59,10 +56,10 @@ def sortEvenOdd(self, nums):
5956
"""
6057
def partition(index, nums):
6158
for i in xrange(len(nums)):
62-
j = index(i)
63-
while nums[i] > 0:
64-
nums[i], nums[j] = nums[j], ~nums[i] # processed
59+
j = i
60+
while nums[i] >= 0:
6561
j = index(j)
62+
nums[i], nums[j] = nums[j], ~nums[i] # processed
6663
for i in xrange(len(nums)):
6764
nums[i] = ~nums[i] # restore values
6865

0 commit comments

Comments
 (0)