Skip to content

Commit 59e249a

Browse files
committed
Quicksort
1 parent 7f23593 commit 59e249a

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

sorting/merge-sort.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def merge_sort(nums: list):
2828
j += 1
2929
k += 1
3030

31-
31+
3232
print(array)
3333
merge_sort(array)
3434
print(array)

sorting/quicksort-modify-array.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
array = [54, 26, 93, 17, 77, 31, 44, 55, 20]
2+
3+
4+
def quick_sort(nums: list) -> list:
5+
if len(nums) < 2:
6+
return nums
7+
pivot_index: int = len(nums) // 2
8+
pivot_value: int = nums[pivot_index]
9+
10+
left: list = []
11+
right: list = []
12+
for i in range(len(nums)):
13+
if i != pivot_index:
14+
if nums[i] < pivot_value:
15+
left.append(nums[i])
16+
else:
17+
right.append(nums[i])
18+
return quick_sort(left) + [pivot_value] + quick_sort(right)
19+
20+
21+
print(array)
22+
array_sorted: list = quick_sort(array)
23+
print(array_sorted)

sorting/quicksort.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
array = [54, 26, 93, 17, 77, 31, 44, 55, 20]
2+
3+
4+
def quick_sort(nums: list, i: int, j: int):
5+
if i < j:
6+
left: int = i
7+
right: int = j
8+
pointer: int = left
9+
pivot_index: int = left + (right - left) // 2
10+
pivot_value: int = nums[pivot_index]
11+
12+
while pointer <= right:
13+
if nums[pointer] < pivot_value:
14+
nums[left], nums[pointer] = nums[pointer], nums[left]
15+
left += 1
16+
pointer += 1
17+
elif nums[pointer] > pivot_value:
18+
nums[pointer], nums[right] = nums[right], nums[pointer]
19+
right -= 1
20+
else:
21+
pointer += 1
22+
23+
quick_sort(nums, i, left)
24+
if pointer > left:
25+
quick_sort(nums, pointer, j)
26+
else:
27+
quick_sort(nums, pointer + 1, j)
28+
29+
30+
print(array)
31+
quick_sort(array, 0, len(array) - 1)
32+
print(array)

0 commit comments

Comments
 (0)