मान लीजिए कि हमारे पास एक अवर्गीकृत सरणी संख्या है, हमें इसे इस तरह पुनर्व्यवस्थित करना होगा कि nums[0]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक सरणी x बनाएं, जिसमें अंकों के समान तत्व हों
-
सॉर्ट x सरणी
-
i :=x – 1, j:=का आकार (x – 1 का आकार)/2 और n :=nums array का आकार
-
l के लिए 0 से n – 1 की सीमा में, प्रत्येक चरण में l को 2 से बढ़ाएँ
-
अंक [एल]:=एक्स [जे]
-
j को 1 से घटाएं
-
-
1 से n - 1 की सीमा में l के लिए प्रत्येक चरण में l को 2 से बढ़ाएँ
-
अंक [एल] :=x[i]
-
मैं 1 से घटाता हूं
-
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: void wiggleSort(vector<int>& nums) { vector <int> x(nums); sort(x.begin(), x.end()); int i = x.size() - 1 ; int j = (x.size() - 1)/2; int n = nums.size(); for(int l = 0; l < n; l +=2){ nums[l] = x[j--]; } for(int l = 1; l < n; l +=2){ nums[l] = x[i--]; } } }; main(){ vector<int> v = {1,5,1,1,6,4}; Solution ob; (ob.wiggleSort(v)); print_vector(v); }
इनपुट
[1,5,1,1,6,4]
आउटपुट
[1, 6, 1, 5, 1, 4, ]