diff --git a/Merge Sort b/Merge Sort new file mode 100644 index 0000000..c1de27e --- /dev/null +++ b/Merge Sort @@ -0,0 +1,39 @@ +// Merge two subarrays L and M into arr +void merge(int arr[], int p, int q, int r) { + + // Create L ← A[p..q] and M ← A[q+1..r] + int n1 = q - p + 1; + int n2 = r - q; + + int L[n1], M[n2]; + + for (int i = 0; i < n1; i++) + L[i] = arr[p + i]; + for (int j = 0; j < n2; j++) + M[j] = arr[q + 1 + j]; + + // Maintain current index of sub-arrays and main array + int i, j, k; + i = 0; + j = 0; + k = p; + + // Until we reach either end of either L or M, pick larger among + // elements L and M and place them in the correct position at A[p..r] + while (i < n1 && j < n2) { + if (L[i] <= M[j]) { + arr[k] = L[i]; + i++; + } else { + arr[k] = M[j]; + j++; + } + k++; + } + // When we run out of elements in either L or M, + // pick up the remaining elements and put in A[p..r] + while (i < n1) { + arr[k] = L[i]; + i++; + k++; + } diff --git a/MergeSort.py b/MergeSort.py new file mode 100644 index 0000000..3e3b211 --- /dev/null +++ b/MergeSort.py @@ -0,0 +1,56 @@ +# MergeSort in Python + + +def mergeSort(array): + if len(array) > 1: + + # r is the point where the array is divided into two subarrays + r = len(array)//2 + L = array[:r] + M = array[r:] + + # Sort the two halves + mergeSort(L) + mergeSort(M) + + i = j = k = 0 + + # Until we reach either end of either L or M, pick larger among + # elements L and M and place them in the correct position at A[p..r] + while i < len(L) and j < len(M): + if L[i] < M[j]: + array[k] = L[i] + i += 1 + else: + array[k] = M[j] + j += 1 + k += 1 + + # When we run out of elements in either L or M, + # pick up the remaining elements and put in A[p..r] + while i < len(L): + array[k] = L[i] + i += 1 + k += 1 + + while j < len(M): + array[k] = M[j] + j += 1 + k += 1 + + +# Print the array +def printList(array): + for i in range(len(array)): + print(array[i], end=" ") + print() + + +# Driver program +if __name__ == '__main__': + array = [6, 5, 12, 10, 9, 1] + + mergeSort(array) + + print("Sorted array is: ") + printList(array) diff --git a/SelectionSort.py b/SelectionSort.py new file mode 100644 index 0000000..ae9438e --- /dev/null +++ b/SelectionSort.py @@ -0,0 +1,24 @@ +# Selection sort in Python + + +def selectionSort(array, size): + + for step in range(size): + min_idx = step + + for i in range(step + 1, size): + + # to sort in descending order, change > to < in this line + # select the minimum element in each loop + if array[i] < array[min_idx]: + min_idx = i + + # put min at the correct position + (array[step], array[min_idx]) = (array[min_idx], array[step]) + + +data = [-2, 45, 0, 11, -9] +size = len(data) +selectionSort(data, size) +print('Sorted Array in Ascending Order:') +print(data)