1
+ // TODO: //*Correct Approach/
2
+ class Solution
3
+ {
4
+ public:
5
+ int partition (vector<int > &nums, int l, int r)
6
+ {
7
+ int random = l + rand () % (r - l);
8
+ swap (nums[l], nums[random ]);
9
+ int pivot = nums[l];
10
+ int i = l - 1 , j = r + 1 ;
11
+
12
+ while (true )
13
+ {
14
+ do
15
+ {
16
+ i++;
17
+ } while (nums[i] < pivot);
18
+
19
+ do
20
+ {
21
+ j--;
22
+ } while (nums[j] > pivot);
23
+
24
+ if (i >= j)
25
+ return j;
26
+
27
+ swap (nums[i], nums[j]);
28
+ }
29
+ }
30
+
31
+ void quickSort (vector<int > &nums, int l, int r)
32
+ {
33
+ if (l >= r)
34
+ {
35
+ return ;
36
+ }
37
+ int p = partition (nums, l, r);
38
+ quickSort (nums, l, p);
39
+ quickSort (nums, p + 1 , r);
40
+ }
41
+ vector<int > sortArray (vector<int > &nums)
42
+ {
43
+ srand (time (NULL ));
44
+ quickSort (nums, 0 , nums.size () - 1 );
45
+ return nums;
46
+ }
47
+ };
48
+
49
+ // FIXME: //* This approach uses recursion and those give TLE (NOTE: This approach was only used for learning reccursion)/
50
+ // class Solution
51
+ // {
52
+ // public:
53
+ // void insert(vector<int> &nums, int temp)
54
+ // {
55
+ // if (nums.size() == 0 || nums[nums.size() - 1] <= temp)
56
+ // {
57
+ // nums.push_back(temp);
58
+ // return;
59
+ // }
60
+ // int val = nums[nums.size() - 1];
61
+ // nums.pop_back();
62
+ // insert(nums, temp);
63
+ // nums.push_back(val);
64
+ // return;
65
+ // }
66
+
67
+ // vector<int> sortArray(vector<int> &nums)
68
+ // {
69
+ // if (nums.size() == 1)
70
+ // {
71
+ // return nums;
72
+ // }
73
+ // int temp = nums[nums.size() - 1];
74
+ // nums.pop_back();
75
+ // sortArray(nums);
76
+ // insert(nums, temp);
77
+ // return nums;
78
+ // }
79
+ // };
0 commit comments