Sorting
Sorting
1. Merge Sort
// Code Part
#include<bits/stdc++.h>
using namespace std;
void merge(vector<int> &arr, int start, int mid, int end){
vector<int> temp(end-start+1);
int left = start;
int right = mid+1;
int index = 0;
int main(){
// Output
2. Quick Sort
// Code Part
#include<bits/stdc++.h>
using namespace std;
int partition(vector<int> &arr, int start, int end){
int pos = start;
for(int i = start; i <= end; i++){
if(arr[i] <= arr[end]){
swap(arr[pos], arr[i]);
pos++;
}
}
return pos-1;
}
// left side
quickSort(arr, start, pivot-1);
quickSort(arr, pivot+1, end);
}
int main()
{
vector<int> arr = {2, 5, 3, 4, 1, 3};
quickSort(arr, 0, 5);
for(int i = 0; i < 6; i++){
cout << arr[i] << " ";
}cout << endl;
return 0;
}
// Output
3. Bubble sort
// Code Part
void bubbleSort(int arr[], int n){
for(int i = 0; i < n-1; i++){
bool swapped = false;
for(int j = 1; j < n - i; j++){
if(arr[j] < arr[j-1]){
swapped = true;
swap(arr[j], arr[j-1]);
}
}
if(swapped == false){
break;
}
}
}
int main(){
int arr[] = {5, 2, 4,1,9, 10, 3};
cout << "Before Sorting: ";
printArr(arr, 7);
bubbleSort(arr, 7);
cout << "After Sorting: ";
printArr(arr, 7);
// Output
3. Selection sort
// Code Part
int getMaxIndex(int arr[], int start, int end){
int maxIndex = 0;
for(int i = start; i <= end; i++){
if(arr[i] > arr[maxIndex]){
maxIndex = i;
}
}
return maxIndex;
}
void selectionSort(int arr[], int n){
for(int i = 0; i < n-1; i++){
int last = n-1-i;
int maxIndex = getMaxIndex(arr, 0, last);
swap(arr[last], arr[maxIndex]);
}
}
int main(){
int arr[] = {5, 2, 4,1,9, 10, 3};
cout << "Before Sorting: ";
printArr(arr, 7);
selectionSort(arr,7);
cout << "After Sorting: ";
printArr(arr, 7);
// Output
5. Insertion sort
// Code Part
void insertionSort(int arr[], int n){
for(int i = 0; i < n-1; i++){
for(int j = i+1; j > 0; j--){
if(arr[j] < arr[j-1]){
swap(arr[j], arr[j-1]);
}else{
break;
}
}
}
}
int main(){
int arr[] = {5, 2, 4,1,9, 10, 3};
cout << "Before Sorting: ";
printArr(arr, 7);
insertionSort(arr, 7);
cout << "After Sorting: ";
printArr(arr, 7);
// Output