diff --git a/Sorting Algorithms/quick_sort.py b/Sorting Algorithms/quick_sort.py index 9731a8ee..eaa6b679 100644 --- a/Sorting Algorithms/quick_sort.py +++ b/Sorting Algorithms/quick_sort.py @@ -1,37 +1,37 @@ #--------------------------------------- # Quick Sort #--------------------------------------- -def quick_sort(A): - quick_sort2(A, 0, len(A)-1) +def quick_sort(ArrayToSort): + quick_sort2(ArrayToSort, 0, len(ArrayToSort)-1) -def quick_sort2(A, low, hi): +def quick_sort2(ArrayToSort, low, hi, threshold = 10): if hi-low < threshold and low < hi: - quick_selection(A, low, hi) + quick_selection(ArrayToSort, low, hi) elif low < hi: - p = partition(A, low, hi) - quick_sort2(A, low, p - 1) - quick_sort2(A, p + 1, hi) + p = partition(ArrayToSort, low, hi) + quick_sort2(ArrayToSort, low, p - 1) + quick_sort2(ArrayToSort, p + 1, hi) -def get_pivot(A, low, hi): +def get_pivot(ArrayToSort, low, hi): mid = (hi + low) // 2 - s = sorted([A[low], A[mid], A[hi]]) - if s[1] == A[low]: + s = sorted([ArrayToSort[low], ArrayToSort[mid], ArrayToSort[hi]]) + if s[1] == ArrayToSort[low]: return low - elif s[1] == A[mid]: + elif s[1] == ArrayToSort[mid]: return mid return hi -def partition(A, low, hi): - pivotIndex = get_pivot(A, low, hi) - pivotValue = A[pivotIndex] - A[pivotIndex], A[low] = A[low], A[pivotIndex] +def partition(ArrayToSort, low, hi): + pivotIndex = get_pivot(ArrayToSort, low, hi) + pivotValue = ArrayToSort[pivotIndex] + ArrayToSort[pivotIndex], ArrayToSort[low] = ArrayToSort[low], ArrayToSort[pivotIndex] border = low for i in range(low, hi+1): - if A[i] < pivotValue: + if ArrayToSort[i] < pivotValue: border += 1 - A[i], A[border] = A[border], A[i] - A[low], A[border] = A[border], A[low] + ArrayToSort[i], ArrayToSort[border] = ArrayToSort[border], ArrayToSort[i] + ArrayToSort[low], ArrayToSort[border] = ArrayToSort[border], ArrayToSort[low] return (border) @@ -44,7 +44,7 @@ def quick_selection(x, first, last): if minIndex != i: x[i], x[minIndex] = x[minIndex], x[i] -A = [5,9,1,2,4,8,6,3,7] -print(A) -quick_sort(A) -print(A) \ No newline at end of file +ArrayToSort = [5,9,1,2,4,8,6,3,7] +print(ArrayToSort) +quick_sort(ArrayToSort) +print(ArrayToSort) \ No newline at end of file