Skip to content

Commit 567f115

Browse files
author
dipanmandal
authored
added randomized quicksort algorithm
this quicksort algorithm works taking a random element from the subarray as the pivot element
1 parent 8f30f91 commit 567f115

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

Diff for: randomized_quickSort.cpp

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
int random(int lower, int upper){ //function to generate a random number in a given range
5+
6+
int num = (rand() %(upper - lower + 1)) + lower;
7+
return num;
8+
}
9+
10+
void printArray(int* arr, int size){
11+
for(int i = 0 ; i < size; i++) cout<<arr[i]<<" ";
12+
cout<<endl;
13+
}
14+
15+
int partition(int* arr, int start , int end){
16+
17+
int index = random(start, end); //select a random index in the subarray
18+
swap(arr[start], arr[index]); //swap that random index with the first element of that subarray
19+
20+
//continue with the normal quicksort partition subroutine
21+
22+
int pivot = arr[start];
23+
int i = start;
24+
25+
for(int j = start +1; j<= end; j++){
26+
if(arr[j]<= pivot){
27+
i++;
28+
if (i != j) swap(arr[i], arr[j]);
29+
}
30+
}
31+
swap(arr[start], arr[i]);
32+
33+
return i;
34+
35+
}
36+
37+
void randomized_quickSort(int* arr, int p, int r){
38+
if (p < r){ //this line is important as it controls the recursion calls
39+
int q = partition(arr, p , r);
40+
randomized_quickSort(arr, p, q-1);
41+
randomized_quickSort(arr, q+1, r);
42+
}
43+
}
44+
45+
int main(){
46+
int n;
47+
cout<<"enter the number of elements in the array: "<<endl;
48+
cin>>n;
49+
50+
int arr[n];
51+
52+
cout<<"enter the elements: "<<endl;
53+
54+
for(int i = 0; i < n; i++)cin>>arr[i];
55+
56+
cout<<"the unsorted array is: "<<endl;
57+
printArray(arr,n);
58+
59+
randomized_quickSort(arr, 0, n-1);
60+
61+
cout<<"the sorted array is: "<<endl;
62+
printArray(arr, n);
63+
}

0 commit comments

Comments
 (0)