কম্পিউটার

C qsort() বনাম C++ sort()


এখানে আমরা C-তে qsort() এবং C++-এ sort() এর মধ্যে পার্থক্য কী তা দেখব।

C qsort() ফাংশন প্রদান করে, যা একটি অ্যারে সাজানোর জন্য ব্যবহার করা যেতে পারে। ফাংশন আর্গুমেন্ট এবং সিনট্যাক্স নিচের মত।

void qsort(void *base, size_t num, size_t size, int (*comparator) (const void*, const void*));

এই ফাংশনটি সেই অ্যারের বেস অ্যাড্রেস নেয়, সেই অ্যারের উপাদানের সংখ্যা। অ্যারের প্রতিটি আইটেমের আকার, এবং একটি তুলনাকারী ফাংশন।

C++ sort() ফাংশন প্রদান করে। এটি C++ STL-এর ভিতরে উপস্থিত। আর্গুমেন্ট এবং সিনট্যাক্স নিচের মত।

void sort(T first, T last, Compare c);

এখানে বারবার উপাদানের ক্রম সংরক্ষিত হওয়ার নিশ্চয়তা নেই। সেই উদ্দেশ্যে, আমরা C++ STL দ্বারা প্রদত্ত stable_sort ব্যবহার করতে পারি।

qsort() এবং sort() এর মধ্যে পার্থক্য

qsort() in C sort() in C++
এটি কুইকসর্ট অ্যালগরিদম ব্যবহার করে৷ এটি ইন্ট্রোসর্ট ব্যবহার করে৷ এটি হাইব্রিড বাছাই অ্যালগরিদম। এখানে বিভিন্ন বাস্তবায়ন বিভিন্ন অ্যালগরিদম ব্যবহার করে। GNU C++ STL তিন অংশের হাইব্রিড বাছাই ব্যবহার করে। Introsort, Quicksort এবং Insertion Sort.
C স্ট্যান্ডার্ড এই সাজানোর অ্যালগরিদমের জটিলতা সম্পর্কে কথা বলে না৷ এই ক্ষেত্রে জটিলতা হল O(n logn) সবচেয়ে খারাপ ক্ষেত্রে C++11 sort()। কিছু পূর্ববর্তী সংস্করণ sort() সবচেয়ে খারাপ ক্ষেত্রে O(n2) নেয় এবং গড় ক্ষেত্রে তারা O(nlogn) নেয়।
এই ধরণের রানিং টাইম sort() এর চেয়ে বড় চলমান সময় qsort() এর চেয়ে কম।
qsort() বিভিন্ন ধরণের ডেটার জন্য নমনীয় নয়৷ sort() নমনীয়৷ এটি সি অ্যারে, সি++ ভেক্টর, সি++ ডিক এবং কিছু অন্যান্য পাত্রে সাজাতে পারে।
এই বাছাইটি বেশি নিরাপদ নয়৷ এটি ডেটা অ্যাক্সেস করতে অনিরাপদ শূন্য পয়েন্টার ব্যবহার করে৷ এই সাজানোর কৌশল আরও নিরাপদ৷ ডেটা অ্যাক্সেস করার জন্য এটির কোনো অনিরাপদ শূন্য পয়েন্টারের প্রয়োজন নেই৷

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

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

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

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