ধরুন আমাদের পূর্ণসংখ্যার একটি অ্যারে আছে; আমাদেরকে ক্রমবর্ধমান ক্রমে সাজাতে হবে। সুতরাং যদি অ্যারেটি [5,2,3,1] এর মত হয়, তাহলে ফলাফল হবে [1,2,3,5]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
পার্টিশন নামে একটি পদ্ধতি তৈরি করুন, এটি অ্যারে, নিম্ন এবং উচ্চ
লাগবে -
পিভট সেট করুন :=কম
-
আমি নিম্ন থেকে উচ্চ রেঞ্জের জন্য – 1
-
যদি nums[i]
-
-
অদলবদল সংখ্যা[পিভট] এবং সংখ্যা [উচ্চ]
-
sortArr() নামক একটি পদ্ধতি সংজ্ঞায়িত করুন, এটি অ্যারে, কম এবং উচ্চ
লাগবে -
যদি কম>=বেশি, তাহলে ফেরত দিন
-
partitionIndex :=পার্টিশন (সংখ্যা, নিম্ন, উচ্চ)
-
sortArr(সংখ্যা, কম, পার্টিশন ইনডেক্স – 1)
-
sortArr(সংখ্যা, পার্টিশন ইনডেক্স + 1, উচ্চ)
-
প্রধান পদ্ধতি থেকে sortArr() কল করুন 0 এবং arr - 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]