diff --git a/Geeks For Geeks/Sorting problems/Bubble Sort.py b/Geeks For Geeks/Sorting problems/Bubble Sort.py new file mode 100644 index 00000000..cca8b97e --- /dev/null +++ b/Geeks For Geeks/Sorting problems/Bubble Sort.py @@ -0,0 +1,7 @@ +def bubble_sort(arr): + 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 diff --git a/Geeks For Geeks/Sorting problems/Insertion Sort.py b/Geeks For Geeks/Sorting problems/Insertion Sort.py new file mode 100644 index 00000000..937e19ae --- /dev/null +++ b/Geeks For Geeks/Sorting problems/Insertion Sort.py @@ -0,0 +1,9 @@ +def insertion_sort(arr): + for i in range(1, len(arr)): + key = arr[i] + j = i - 1 + while j >= 0 and arr[j] > key: + arr[j + 1] = arr[j] + j -= 1 + arr[j + 1] = key + return arr diff --git a/Geeks For Geeks/Sorting problems/Merge Sort.py b/Geeks For Geeks/Sorting problems/Merge Sort.py new file mode 100644 index 00000000..beda12ca --- /dev/null +++ b/Geeks For Geeks/Sorting problems/Merge Sort.py @@ -0,0 +1,23 @@ +def merge_sort(arr): + if len(arr) <= 1: + return arr + + mid = len(arr) // 2 + left = merge_sort(arr[:mid]) + right = merge_sort(arr[mid:]) + + return merge(left, right) + +def merge(left, right): + result = [] + i = j = 0 + while i < len(left) and j < len(right): + if left[i] < right[j]: + result.append(left[i]) + i += 1 + else: + result.append(right[j]) + j += 1 + result.extend(left[i:]) + result.extend(right[j:]) + return result diff --git a/Geeks For Geeks/Sorting problems/Selection Sort.py b/Geeks For Geeks/Sorting problems/Selection Sort.py new file mode 100644 index 00000000..c68de492 --- /dev/null +++ b/Geeks For Geeks/Sorting problems/Selection Sort.py @@ -0,0 +1,9 @@ +def selection_sort(arr): + 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