forked from menault/TD4_DEV51_Qualite_Algo
37 lines
719 B
Python
37 lines
719 B
Python
![]() |
def sort1d(arr):
|
||
|
"""
|
||
|
Cet algo à une complexité de O(n log n)
|
||
|
"""
|
||
|
|
||
|
if len(arr) < 2:
|
||
|
return arr
|
||
|
|
||
|
mid = len(arr) // 2
|
||
|
left = sort1d(arr[:mid])
|
||
|
right = sort1d(arr[mid:])
|
||
|
|
||
|
result = []
|
||
|
i = j = 0
|
||
|
|
||
|
while i < len(left) and j < len(right):
|
||
|
lv = left[i] if type(left[i]) is int else sum(left[i])
|
||
|
rv = right[j] if type(right[j]) is int else sum(right[j])
|
||
|
|
||
|
if lv < rv:
|
||
|
result.append(left[i])
|
||
|
i += 1
|
||
|
else:
|
||
|
result.append(right[j])
|
||
|
j += 1
|
||
|
|
||
|
result.extend(left[i:])
|
||
|
result.extend(right[j:])
|
||
|
return result
|
||
|
|
||
|
def sort2d(arr):
|
||
|
"""
|
||
|
Cet algo à une complexité de O(m n log n + m log m)
|
||
|
"""
|
||
|
|
||
|
sorted_rows = [sort1d(row) for row in arr]
|
||
|
return sort1d(sorted_rows)
|