Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 54f0bb6

Browse files
logging in sorting
1 parent 699971b commit 54f0bb6

File tree

10 files changed

+175
-108
lines changed

10 files changed

+175
-108
lines changed

‎competitivepython/sorting/bubblesort.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
import logging
2+
13
def bubble_sort(arr):
2-
length = len(arr)
3-
for i in range(length):
4-
for j in range(0, length-i-1):
5-
if arr[j] > arr[j+1]:
6-
arr[j], arr[j+1] = arr[j+1], arr[j]
7-
return arr
4+
try:
5+
length = len(arr)
6+
for i in range(length):
7+
for j in range(0, length-i-1):
8+
if arr[j] > arr[j+1]:
9+
arr[j], arr[j+1] = arr[j+1], arr[j]
10+
return arr
11+
except Exception as e:
12+
logging.exception("An error occurred during bubble sort: %s", e)
13+
return []
14+

‎competitivepython/sorting/bucketsort.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1+
import logging
2+
13
def bucket_sort(arr):
2-
n = len(arr)
3-
max_val = max(arr)
4-
bucket = []
5-
for i in range(n):
6-
bucket.append([])
7-
for i in arr:
8-
index_b = int(n * i / max_val)
9-
if index_b != n:
10-
bucket[index_b].append(i)
11-
else:
12-
bucket[n - 1].append(i)
13-
for i in range(n):
14-
bucket[i] = sorted(bucket[i])
15-
result = []
16-
for i in range(n):
17-
result = result + bucket[i]
18-
return result
4+
try:
5+
n = len(arr)
6+
max_val = max(arr)
7+
bucket = []
8+
for i in range(n):
9+
bucket.append([])
10+
for i in arr:
11+
index_b = int(n * i / max_val)
12+
if index_b != n:
13+
bucket[index_b].append(i)
14+
else:
15+
bucket[n - 1].append(i)
16+
for i in range(n):
17+
bucket[i] = sorted(bucket[i])
18+
result = []
19+
for i in range(n):
20+
result = result + bucket[i]
21+
return result
22+
except Exception as e:
23+
logging.exception("An error occurred during bucket sort: %s", e)
24+
return []

‎competitivepython/sorting/heapsort.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1+
import logging
2+
13
def heap_sort(arr):
2-
n = len(arr)
3-
for i in range(n//2 - 1, -1, -1):
4-
heapify(arr, n, i)
5-
for i in range(n-1, 0, -1):
6-
arr[i], arr[0] = arr[0], arr[i]
7-
heapify(arr, i, 0)
8-
return arr
4+
try:
5+
n = len(arr)
6+
for i in range(n//2 - 1, -1, -1):
7+
heapify(arr, n, i)
8+
for i in range(n-1, 0, -1):
9+
arr[i], arr[0] = arr[0], arr[i]
10+
heapify(arr, i, 0)
11+
return arr
12+
except Exception as e:
13+
logging.exception("An error occurred during heap sort: %s", e)
14+
return []
15+
916

1017
def heapify(arr, n, i):
1118
largest = i
Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1+
import logging
2+
13
def insertion_sort(arr):
2-
n = len(arr)
3-
for i in range(1, n):
4-
target = arr[i]
5-
j = i - 1
6-
while j >= 0 and target < arr[j]:
7-
arr[j + 1] = arr[j]
8-
j -= 1
9-
arr[j + 1] = target
10-
return arr
4+
try:
5+
n = len(arr)
6+
for i in range(1, n):
7+
target = arr[i]
8+
j = i - 1
9+
while j >= 0 and target < arr[j]:
10+
arr[j + 1] = arr[j]
11+
j -= 1
12+
arr[j + 1] = target
13+
return arr
14+
except Exception as e:
15+
logging.exception("An error occurred during insertion sort: %s", e)
16+
return []
17+

‎competitivepython/sorting/mergesort.py

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,35 @@
1+
import logging
2+
13
def merge_sort(arr):
2-
if len(arr) > 1:
3-
mid = len(arr) // 2
4-
L = arr[:mid]
5-
R = arr[mid:]
6-
merge_sort(L)
7-
merge_sort(R)
8-
i = j = k = 0
9-
aux = [0] * len(arr)
10-
while i < len(L) and j < len(R):
11-
if L[i] < R[j]:
4+
try:
5+
if len(arr) > 1:
6+
mid = len(arr) // 2
7+
L = arr[:mid]
8+
R = arr[mid:]
9+
merge_sort(L)
10+
merge_sort(R)
11+
i = j = k = 0
12+
aux = [0] * len(arr)
13+
while i < len(L) and j < len(R):
14+
if L[i] < R[j]:
15+
aux[k] = L[i]
16+
i += 1
17+
else:
18+
aux[k] = R[j]
19+
j += 1
20+
k += 1
21+
while i < len(L):
1222
aux[k] = L[i]
1323
i += 1
14-
else:
24+
k += 1
25+
while j < len(R):
1526
aux[k] = R[j]
1627
j += 1
17-
k += 1
18-
while i < len(L):
19-
aux[k] = L[i]
20-
i += 1
21-
k += 1
22-
while j < len(R):
23-
aux[k] = R[j]
24-
j += 1
25-
k += 1
26-
for i in range(len(arr)):
27-
arr[i] = aux[i]
28-
return arr
28+
k += 1
29+
for i in range(len(arr)):
30+
arr[i] = aux[i]
31+
return arr
32+
except Exception as e:
33+
logging.exception("An error occurred during merge sort: %s", e)
34+
return []
35+

‎competitivepython/sorting/quicksort.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1+
import logging
2+
13
def quick_sort(arr):
2-
quick_sort_helper(arr, 0, len(arr)-1)
3-
return arr
4+
try:
5+
quick_sort_helper(arr, 0, len(arr)-1)
6+
return arr
7+
except Exception as e:
8+
logging.exception("An error occurred during quick sort: %s", e)
9+
return []
410

511
def quick_sort_helper(arr, low, high):
612
if low < high:

‎competitivepython/sorting/radixsort.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1+
import logging
2+
13
def radix_sort(arr):
2-
max_val = max(arr)
3-
num_digits = len(str(max_val))
4-
for k in range(num_digits):
5-
s = [[] for i in range(10)]
6-
for i in arr:
7-
s[i // (10**k) % 10].append(i)
8-
arr = [j for sub in s for j in sub]
9-
return arr
4+
try:
5+
max_val = max(arr)
6+
num_digits = len(str(max_val))
7+
for k in range(num_digits):
8+
s = [[] for i in range(10)]
9+
for i in arr:
10+
s[i // (10**k) % 10].append(i)
11+
arr = [j for sub in s for j in sub]
12+
return arr
13+
except Exception as e:
14+
logging.exception("An error occurred during radix sort: %s", e)
15+
return []
16+
Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1+
import logging
2+
13
def selection_sort(arr):
2-
n = len(arr)
3-
for i in range(n):
4-
min_idx = i
5-
for j in range(i+1, n):
6-
if arr[j] < arr[min_idx]:
7-
min_idx = j
8-
arr[i], arr[min_idx] = arr[min_idx], arr[i]
9-
return arr
4+
try:
5+
n = len(arr)
6+
for i in range(n):
7+
min_idx = i
8+
for j in range(i+1, n):
9+
if arr[j] < arr[min_idx]:
10+
min_idx = j
11+
arr[i], arr[min_idx] = arr[min_idx], arr[i]
12+
return arr
13+
except Exception as e:
14+
logging.exception("An error occurred during selection sort: %s", e)
15+
return []

‎competitivepython/sorting/shellsort.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
1+
import logging
2+
13
def shell_sort(arr):
2-
n = len(arr)
3-
gap = n // 2
4-
while gap > 0:
5-
for i in range(gap, n):
6-
temp = arr[i]
7-
j = i
8-
while j >= gap and arr[j - gap] > temp:
9-
arr[j] = arr[j - gap]
10-
j -= gap
11-
arr[j] = temp
12-
gap //= 2
13-
return arr
4+
try:
5+
n = len(arr)
6+
gap = n // 2
7+
while gap > 0:
8+
for i in range(gap, n):
9+
temp = arr[i]
10+
j = i
11+
while j >= gap and arr[j - gap] > temp:
12+
arr[j] = arr[j - gap]
13+
j -= gap
14+
arr[j] = temp
15+
gap //= 2
16+
return arr
17+
except Exception as e:
18+
logging.exception("An error occurred during shell sort: %s", e)
19+
return []
20+

‎competitivepython/sorting/timsort.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import logging
2+
13
def insertion_sort(arr, left=0, right=None):
24
if right is None:
35
right = len(arr) - 1
@@ -19,19 +21,24 @@ def merge(left, right):
1921
return [right[0]] + merge(left, right[1:])
2022

2123
def tim_sort(arr):
22-
n = len(arr)
23-
min_run = 32
24-
for i in range(0, n, min_run):
25-
insertion_sort(arr, i, min((i + min_run - 1), n - 1))
26-
size = min_run
27-
while size < n:
28-
for start in range(0, n, size * 2):
29-
midpoint = start + size - 1
30-
end = min((start + size * 2 - 1), (n-1))
31-
merged_array = merge(
32-
left=arr[start:midpoint + 1],
33-
right=arr[midpoint + 1:end + 1]
34-
)
35-
arr[start:start + len(merged_array)] = merged_array
36-
size *= 2
37-
return arr
24+
try:
25+
n = len(arr)
26+
min_run = 32
27+
for i in range(0, n, min_run):
28+
insertion_sort(arr, i, min((i + min_run - 1), n - 1))
29+
size = min_run
30+
while size < n:
31+
for start in range(0, n, size * 2):
32+
midpoint = start + size - 1
33+
end = min((start + size * 2 - 1), (n-1))
34+
merged_array = merge(
35+
left=arr[start:midpoint + 1],
36+
right=arr[midpoint + 1:end + 1]
37+
)
38+
arr[start:start + len(merged_array)] = merged_array
39+
size *= 2
40+
return arr
41+
except Exception as e:
42+
logging.exception("An error occurred during bucket sort: %s", e)
43+
return []
44+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /