-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsort.cpp
More file actions
65 lines (60 loc) · 1.47 KB
/
sort.cpp
File metadata and controls
65 lines (60 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
//Time Complexity: O(nlogn)
//Space Complexity: O(1)
// void sort(vector<int> &nums, int size){
// sort(nums.begin(), nums.end());
// }
//Time Complexity: O(n)
// void sort(vector<int> &nums, int size){
// int count0=0,count1=0,count2=0;
// for (int i=0 ; i< size ; i++){
// if (nums[i]==0){
// count0++;
// }else if(nums[i]==1){
// count1++;
// }else{
// count2++;
// }
// }
// int idx=0;
// for(int i=0 ; i<count0 ; i++){
// nums[idx++]=0;
// }
// for (int i=0; i<count1 ; i++){
// nums[idx++]=1;
// }
// for (int i=0 ; i<count2 ; i++){
// nums[idx++]=2;
// }
// }
//Time Complexity: O(n) -> Most Optimal
//Dutch National Flag Algorithm
void sort(vector<int> &nums, int size){
int low=0, mid=0 , high=size-1;
while(mid<=high){
if (nums[mid]==0){
swap(nums[low],nums[mid]);
low++;
mid++;
}else if (nums[mid]==1){
mid++;
}else{
swap(nums[mid],nums[high]);
high--;
}
}
}
void print(vector<int> &nums,int size){
for (int i=0 ; i<size ; i++){
cout<<nums[i]<<" ";
}
}
int main(){
vector<int> nums={0,2,1,1,2,1,1,0,0};
int size=nums.size();
sort(nums,size);
print(nums,size);
}