-
Notifications
You must be signed in to change notification settings - Fork 174
/
Copy pathQuick sort in cpp
50 lines (40 loc) · 1.38 KB
/
Quick sort in cpp
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
#include <iostream>
using namespace std;
// Function to partition the array
int partition(int arr[], int low, int high) {
// Select the pivot (using the last element in this case)
int pivot = arr[high];
// Index of the smaller element
int i = low - 1;
for (int j = low; j < high; j++) {
// If the current element is smaller than or equal to the pivot
if (arr[j] <= pivot) {
i++; // Increment the index of the smaller element
swap(arr[i], arr[j]); // Swap the smaller element with the current element
}
}
// Place the pivot element in its correct position
swap(arr[i + 1], arr[high]);
return i + 1; // Return the partitioning index
}
// Function to implement QuickSort
void quickSort(int arr[], int low, int high) {
if (low < high) {
// Partition the array around a pivot and get the partition index
int pi = partition(arr, low, high);
// Recursively sort the elements before and after partition
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
// Function to print the array
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
int arr[] = {10, 80, 30, 90, 40, 50, 70};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Unsorted array: ";