কম্পিউটার টিউটোরিয়াল

C++-এ বড় থেকে ছোট সর্ট: অল্টারনেটিং ম্যাক্স-মিন

একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে। এটিকে নিম্নলিখিত প্যাটার্নে সাজাতে হবে:

  • ১লা উপাদান: সর্বোচ্চ
  • ২য় উপাদান: সর্বনিম্ন
  • ৩য় উপাদান: ২য় সর্বোচ্চ
  • ৪র্থ উপাদান: ২য় সর্বনিম্ন
  • এবং এভাবেই চলতে থাকবে...

উদাহরণ

ইনপুট: [6, 3, 10, 4]

সোর্টেড: [3, 4, 6, 10]

আউটপুট: [10, 3, 6, 4]

অ্যালগরিদম

  1. অ্যারেটি সর্ট করুন।
  2. দুটি পয়েন্টার: i = 0 (শুরু), j = n-1 (শেষ)।
  3. while (i <= j):
    • nums[j] যোগ করুন, j--
    • যদি i <= j হয়, nums[i] যোগ করুন, i++

C++ বাস্তবায়ন

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    vector<int> solve(vector<int>& nums) {
        vector<int> ret;
        sort(nums.begin(), nums.end());
        int i = 0, j = nums.size() - 1;
        while (i <= j) {
            ret.push_back(nums[j--]);
            if (i <= j)
                ret.push_back(nums[i++]);
        }
        return ret;
    }
};

int main() {
    Solution ob;
    vector<int> v = {6, 3, 10, 4};
    auto res = ob.solve(v);
    for (int x : res) cout << x << " ";
    return 0;
}

সময় জটিলতা

O(n log n) - সর্টিং-এর কারণে। স্পেস O(n)।

  1. C++-এ জাম্প গেম V (Jump Game V)

  2. লিংকড লিস্ট সর্ট C++-এ

  3. C++-এ Sort Characters By Frequency

  4. 3-ওয়ে মার্জ সোর্ট (3-way Merge Sort) C++-এ