Update dnf-sort.cpp

pull/1124/head
Ansh Tripathi 2023-01-01 18:16:58 +05:30 committed by GitHub
parent c63ec9ee47
commit cb36b08146
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 10 deletions

View File

@ -1,6 +1,11 @@
// C++ program to sort an array
// with 0, 1 and 2 using dnf sort which also stands for “Dutch National Flag algorithm”
#include <bits/stdc++.h>
using namespace std;
// Function to sort the input array,
// the array is assumed
// to have values in {0, 1, 2}
@ -9,22 +14,22 @@ void sort012(int a[], int arr_size)
int lo = 0;
int hi = arr_size - 1;
int mid = 0;
// Iterate till all the elements
// are sorted
while (mid <= hi) {
switch (a[mid]) {
// If the element is 0
case 0:
swap(a[lo++], a[mid++]);
break;
// If the element is 1 .
case 1:
mid++;
break;
// If the element is 2
case 2:
swap(a[mid], a[hi--]);
@ -32,7 +37,7 @@ void sort012(int a[], int arr_size)
}
}
}
// Function to print array arr[]
void printArray(int arr[], int arr_size)
{
@ -40,16 +45,20 @@ void printArray(int arr[], int arr_size)
for (int i = 0; i < arr_size; i++)
cout << arr[i] << " ";
}
// Driver Code
int main()
{
int arr[] = { 0, 1, 1, 0, 1, 2, 1, 2, 0, 0, 0, 1 };
int n = sizeof(arr) / sizeof(arr[0]);
sort012(arr, n);
printArray(arr, n);
return 0;
}
// Time Complexity: O(n), Only one traversal of the array is needed.
// Space Complexity: O(1), No extra space is required.