এখানে আমরা 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() নমনীয়৷ এটি সি অ্যারে, সি++ ভেক্টর, সি++ ডিক এবং কিছু অন্যান্য পাত্রে সাজাতে পারে। |
এই বাছাইটি বেশি নিরাপদ নয়৷ এটি ডেটা অ্যাক্সেস করতে অনিরাপদ শূন্য পয়েন্টার ব্যবহার করে৷ | এই সাজানোর কৌশল আরও নিরাপদ৷ ডেটা অ্যাক্সেস করার জন্য এটির কোনো অনিরাপদ শূন্য পয়েন্টারের প্রয়োজন নেই৷ | ৷