मान लीजिए हमारे पास पूर्णांकों का एक ऐरे है; हमें उन्हें आरोही क्रम में सॉर्ट करना है। उदाहरण के लिए, यदि ऐरे [5,2,3,1] है, तो परिणाम [1,2,3,5] होगा।
समाधान दृष्टिकोण (क्विकसॉर्ट)
partition() विधि: पिवट चुनें, तत्वों को पुनर्व्यवस्थित करें
sortArr() विधि: रिकर्सिवली बाएं और दाएं भाग सॉर्ट करें
मुख्य विधि से sortArr(0, n-1) कॉल करें
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
cout << "[";
for(int i = 0; i < v.size(); i++){
cout << v[i] << ", ";
}
cout << "]" << endl;
}
class Solution {
public:
int partition(vector<int>& nums, int low, int high){
int pivot = low;
for(int i = low; i < high; i++){
if(nums[i] < nums[high]){
swap(nums[i], nums[pivot]);
pivot++;
}
}
swap(nums[pivot], nums[high]);
return pivot;
}
void sortArr(vector<int>& nums, int low, int high){
if(low >= high) return;
int partitionIndex = partition(nums, low, high);
sortArr(nums, low, partitionIndex - 1);
sortArr(nums, partitionIndex + 1, high);
}
vector<int> sortArray(vector<int>& nums) {
sortArr(nums, 0, nums.size() - 1);
return nums;
}
};
int main(){
vector<int> v1 = {5,2,3,1};
Solution ob;
print_vector(ob.sortArray(v1));
return 0;
}
इनपुट
[5,2,3,1]
आउटपुट
[1,2,3,5]