@@ -10,10 +10,10 @@ def sortEvenOdd(self, nums):
10
10
"""
11
11
def partition (index , nums ):
12
12
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 :
16
15
j = index (j )
16
+ nums [i ], nums [j ] = nums [j ], ~ nums [i ] # processed
17
17
for i in xrange (len (nums )):
18
18
nums [i ] = ~ nums [i ] # restore values
19
19
@@ -26,13 +26,10 @@ def inplace_counting_sort(nums, left, right, reverse=False): # Time: O(n)
26
26
for i in xrange (1 , len (count )):
27
27
count [i ] += count [i - 1 ]
28
28
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 :
32
30
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 ]
36
33
for i in xrange (left , right + 1 ):
37
34
nums [i ] = ~ nums [i ] # restore values
38
35
if reverse : # unstable
@@ -59,10 +56,10 @@ def sortEvenOdd(self, nums):
59
56
"""
60
57
def partition (index , nums ):
61
58
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 :
65
61
j = index (j )
62
+ nums [i ], nums [j ] = nums [j ], ~ nums [i ] # processed
66
63
for i in xrange (len (nums )):
67
64
nums [i ] = ~ nums [i ] # restore values
68
65
0 commit comments