বিভিন্ন বাদামের একটি তালিকা এবং বোল্টের আরেকটি তালিকা দেওয়া হয়েছে৷ আমাদের কাজ হল প্রদত্ত তালিকা থেকে বাদাম এবং বোল্টের সঠিক মিল খুঁজে বের করা এবং সেই বাদামটিকে বোল্টের সাথে বরাদ্দ করা, যখন এটি মিলে যায়।
এই সমস্যাটি দ্রুত সাজানোর কৌশল দ্বারা সমাধান করা হয়। বোল্টের শেষ উপাদানটিকে পিভট হিসাবে গ্রহণ করে, বাদামের তালিকাটি পুনরায় সাজান এবং নাটের চূড়ান্ত অবস্থান পান যার বোল্টটি পিভট উপাদান। বাদামের তালিকা বিভাজন করার পর, আমরা নির্বাচিত নাট ব্যবহার করে বোল্টের তালিকাকে পার্টিশন করতে পারি। সমস্ত মিল পেতে বাম এবং ডান উপ-তালিকার জন্য একই কাজগুলি সঞ্চালিত হয়৷
ইনপুট এবং আউটপুট
ইনপুট:তালা এবং কীগুলির তালিকা. নাট ={ ),@,*,^,(,%, !,$,&,#}বোল্ট ={ !, (, #, %, ), ^, &, *, $, @ }আউটপুট:বাদাম এবং বোল্টের সাথে মিলে যাওয়ার পরে:বাদাম:! # $ % এবং ( ) * @ ^বোল্টস:! # $ % &( ) * @ ^
অ্যালগরিদম
পার্টিশন (অ্যারে, লো, হাই, পিভট)
ইনপুট: একটি অ্যারে, নিম্ন এবং উচ্চ সূচক, পিভট উপাদান।
আউটপুট: পিভট উপাদানের চূড়ান্ত অবস্থান।
Begin i :=j এর জন্য কম রেঞ্জ কম থেকে উচ্চ, যদি অ্যারে[j] <পিভট, তাহলে অ্যারে অদলবদল করুন [i] এবং অ্যারে[j] i 1 দ্বারা বাড়ান অন্য যদি অ্যারে[j] =পিভট, তাহলে swap array[j] এবং array[high] j কমিয়ে 1 সম্পন্ন সোয়াপ অ্যারে[i] এবং array[high] রিটার্ন iEnd
nutAndBoltMatch(বাদাম, বোল্ট, নিম্ন, উচ্চ)
ইনপুট: বাদামের তালিকা, বোল্টের তালিকা, অ্যারের নিম্ন এবং উচ্চতর সূচক।
আউটপুট: কোন নাট কোন বোল্টের জন্য তা প্রদর্শন করুন৷
পিভটলোক শুরু করুন :=পার্টিশন(বাদাম, কম, উচ্চ, বোল্ট[উচ্চ]) পার্টিশন(বোল্ট, নিম্ন, উচ্চ, বাদাম[পিভটলোক]) nutAndBoltMatch(বাদাম, বোল্ট, নিম্ন, পিভটলোক-1) nutAndBoltMatch(বাদাম, বোল্টস) , pivotLoc + 1, উচ্চ)শেষউদাহরণ
#includenamespace ব্যবহার করে std;void show(char array[], int n) { for(int i =0; i আউটপুট
বাদাম এবং বোল্ট মেলানোর পর:বাদাম:! # $ % এবং ( ) * @ ^বোল্টস:! # $ % এবং ( ) * @ ^