From cb36b0814691a59ce25f71c77ef0d659ac444f6a Mon Sep 17 00:00:00 2001 From: Ansh Tripathi Date: Sun, 1 Jan 2023 18:16:58 +0530 Subject: [PATCH] Update dnf-sort.cpp --- algorithms/CPlusPlus/Sorting/dnf-sort.cpp | 29 +++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/algorithms/CPlusPlus/Sorting/dnf-sort.cpp b/algorithms/CPlusPlus/Sorting/dnf-sort.cpp index 0591d184..fe0c19c8 100644 --- a/algorithms/CPlusPlus/Sorting/dnf-sort.cpp +++ b/algorithms/CPlusPlus/Sorting/dnf-sort.cpp @@ -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 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.