-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLilySortV2.py
58 lines (44 loc) · 1.32 KB
/
LilySortV2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# -*- coding: utf-8 -*-
"""
Created on Sat Feb 3 22:19:10 2018
@author: Ilja
"""
def homework(n, arr):
print('arr = ', arr)
pos = dict()
for i, num in enumerate(arr):
pos[num] = i
print(' num =', num)
print(' i =', i)
print(' pos[num] =', pos[num])
cnt = 0
sorted_arr = sorted(arr)
print()
print('sorted_arr = ', sorted_arr)
print(' arr = ', arr)
print(' pos = ', pos)
print()
for i in range(len(arr)):
print('i=',i)
if arr[i] != sorted_arr[i]:
print(' arr[i] (before) =', arr[i])
print(' sorted_arr[i] (before) =', sorted_arr[i])
cnt += 1
print(' cnt=',cnt)
new_idx = pos[sorted_arr[i]]
print(' new_idx=',new_idx)
pos[arr[i]] = new_idx
arr[i], arr[new_idx] = arr[new_idx], arr[i]
print(' arr[i] (after) =', arr[i])
print(' arr[new_idx] (after) =', arr[new_idx])
print(' arr (after) =',arr)
print(' pos (after) =',pos)
return cnt
#n = int(input().strip())
#arr = list(map(int, input().str2ip().split()))
arr = [20,50,30,10]
n = len(arr)
asc = homework(n, arr[:])
#desc = homework(n, arr[::-1])
desc = asc
print(min(asc, desc))