কম্পিউটার

C++-এ ঢেঁকি সাজান


ধরুন আমাদের nums নামক একটি সাজানো বিন্যাস না করা অ্যারে আছে, আমাদের এটিকে যথাস্থানে এমনভাবে সাজাতে হবে যে nums[0] <=nums[1]>=nums[2] <=nums[3].... ইত্যাদি।

সুতরাং, যদি ইনপুটটি nums =[3,5,2,1,6,4] এর মত হয়, তাহলে আউটপুট হবে [3,5,1,6,2,4], অন্য কিছু উত্তর থাকতে পারে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • n :=সংখ্যার আকার

  • আরম্ভ করার জন্য i :=0, যখন i

    • যদি i জোড় হয় এবং nums[i]> nums[i+1] সত্য হয় অথবা i বিজোড় হয় এবং nums[i]> nums[i+1] মিথ্যা হয়, তাহলে

      • অদলবদল(সংখ্যা[i], সংখ্যা[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) {
      int n = nums.size();
      for(int i = 0; i < n - 1; i+=1){
         if((i % 2 == 0) == ( nums[i] > nums[i + 1])){
            swap(nums[i], nums[i + 1]);
         }
      }
   }
};
main(){
   vector<int< v = {3,5,2,1,6,4};
   Solution ob;
   ob.wiggleSort(v);
   print_vector(v);
}

ইনপুট

{3,5,2,1,6,4}

আউটপুট

[3, 5, 1, 6, 2, 4, ]

  1. সন্নিবেশ বাছাই তালিকা C++

  2. C++ এ 3-ওয়ে মার্জ সাজান

  3. C++ এ বাইনারি সন্নিবেশ সাজান

  4. C++ এ স্ট্র্যান্ড সাজান