Skip to content
This repository has been archived by the owner on Feb 21, 2021. It is now read-only.

Added Quicksort in C++ fixes issue #12 . #44

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 106 additions & 0 deletions Sorting/bucket_sort/quick_sort.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/*
QUICK SORT ALGORITHM : TIME COMPLEXITY O(nlogn(n))

*/


#include<iostream>
using namespace std;

//note: call by address in swap function
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}


//partition function which makes partition in array and return the partition index
int partition(int a[],int low ,int high)
{
// i is leftmost index and j is the rightmost index
int i = low,j = high;
int pivot = a[low];


do{
do
{
i++;
}while(a[i]<=pivot); //note :condition is for continuation of loop ans not for stop

do
{
j--;
}while(a[j]>pivot); // note: condition is for continuation of loop and not for stop


if(i<j) // note: condition
swap(&a[i],&a[j]); // note:

}while(i<j); //note:condition

swap(&a[low],&a[j]); //note:

return j;
}


//Quick sort function
void Quick_sort(int a[],int low,int high)
{
int j; // j is partition index

//note: This condition for says that min two elements are required for quick sort
if(low < high)
{
//index j is partition index
j = partition(a,low,high) ;

// left partition // note: low to j is for left partition
Quick_sort(a,low,j);

//right partition //note: j+1 to high is for right partition
Quick_sort(a,j+1,high);

}
}


//main function
int main(){

int n;

//Enter the number of elements in array
cin>>n;

int arr[n];

//input the custom array
for(int i=0;i<n;i++){
cin>>arr[i];
}


cout<<"Before Quick Sort array is : ";
for(int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
cout<<endl;

//Quick sort
Quick_sort(arr,0,n);

cout<<"After Quick Sort array is : ";
for(int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
}




106 changes: 106 additions & 0 deletions Sorting/quick_sort/quick_sort.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/*
QUICK SORT ALGORITHM : TIME COMPLEXITY O(nlogn(n))

*/


#include<iostream>
using namespace std;

//note: call by address in swap function
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}


//partition function which makes partition in array and return the partition index
int partition(int a[],int low ,int high)
{
// i is leftmost index and j is the rightmost index
int i = low,j = high;
int pivot = a[low];


do{
do
{
i++;
}while(a[i]<=pivot); //note :condition is for continuation of loop ans not for stop

do
{
j--;
}while(a[j]>pivot); // note: condition is for continuation of loop and not for stop


if(i<j) // note: condition
swap(&a[i],&a[j]); // note:

}while(i<j); //note:condition

swap(&a[low],&a[j]); //note:

return j;
}


//Quick sort function
void Quick_sort(int a[],int low,int high)
{
int j; // j is partition index

//note: This condition for says that min two elements are required for quick sort
if(low < high)
{
//index j is partition index
j = partition(a,low,high) ;

// left partition // note: low to j is for left partition
Quick_sort(a,low,j);

//right partition //note: j+1 to high is for right partition
Quick_sort(a,j+1,high);

}
}


//main function
int main(){

int n;

// n - number of inputs
cin>>n;

int arr[n];

//input the custom array
for(int i=0;i<n;i++){
cin>>arr[i];
}


cout<<"Before Quick Sort array is : ";
for(int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
cout<<endl;

//Quick sort
Quick_sort(arr,0,n);

cout<<"After Quick Sort array is : ";
for(int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
}