-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSorting_Algorithms.py
More file actions
90 lines (79 loc) · 2.33 KB
/
Sorting_Algorithms.py
File metadata and controls
90 lines (79 loc) · 2.33 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
def bubble_sort(arr):
"""
Perform bubble sort on the array.
:param arr: List of elements to be sorted.
:return: Sorted list of elements.
"""
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
def selection_sort(arr):
"""
Perform selection sort on the array.
:param arr: List of elements to be sorted.
:return: Sorted list of elements.
"""
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
def merger(arr1, arr2):
"""
Merge two sorted arrays into one sorted array.
:param arr1: First sorted list of elements.
:param arr2: Second sorted list of elements.
:return: Merged sorted list of elements.
"""
merged = []
i = j = 0
while i < len(arr1) and j < len(arr2):
if arr1[i] < arr2[j]:
merged.append(arr1[i])
i += 1
else:
merged.append(arr2[j])
j += 1
merged.extend(arr1[i:])
merged.extend(arr2[j:])
return merged
def merge_sort(arr):
"""
Perform merge sort on the array.
:param arr: List of elements to be sorted.
:return: Sorted list of elements.
"""
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left_half = merge_sort(arr[:mid])
right_half = merge_sort(arr[mid:])
return merger(left_half, right_half)
def insertion_sort(arr):
"""
Perform insertion sort on the array.
:param arr: List of elements to be sorted.
:return: Sorted list of elements.
"""
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
if __name__ == "__main__":
# Example usage of sorting algorithms
arr = [4, 8, 0, 2, 4, 6, 7, 3, 9, 1, 5]
print("Unsorted array:", arr)
print("Bubble sorted array:", bubble_sort(arr.copy()))
print("Selection sorted array:", selection_sort(arr.copy()))
print("Merge sorted array:", merge_sort(arr.copy()))
print("Insertion sorted array:", insertion_sort(arr.copy()))