मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है; हमें उन्हें आरोही क्रम में क्रमबद्ध करना होगा। तो अगर सरणी [5,2,3,1] की तरह है, तो परिणाम [1,2,3,5]
होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
विभाजन नामक एक विधि बनाएं, यह सरणी, निम्न और उच्च लेगा
-
धुरी सेट करें:=कम
-
मेरे लिए निम्न से उच्च श्रेणी में - 1
-
अगर nums[i]
-
-
स्वैप nums[pivot] और nums[high]
-
SortArr () नामक एक विधि को परिभाषित करें, यह सरणी, निम्न और उच्च लेगा
-
अगर कम>=ज्यादा है, तो वापस आएं
-
विभाजन सूचकांक:=विभाजन (अंक, निम्न, उच्च)
-
SortArr(nums, low, partitionIndex – 1)
-
SortArr(nums, partitionIndex + 1, high)
-
निम्न और उच्च को 0 और एआर के आकार के रूप में पारित करके मुख्य विधि से सॉर्टअर () को कॉल करें - 1
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; void print_vector(vector<string> 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; } }; main(){ vector<int> v1 = {5,2,3,1}; Solution ob; print_vector(ob.sortArray(v1)); }
इनपुट
[5,2,3,1]
आउटपुट
[1,2,3,5]