এপিআই একটি স্থিতিশীল বাছাইয়ের গ্যারান্টি দেয় যা কুইকসোর্ট অফার করে না। তবে, আদিম মানগুলিকে তাদের প্রাকৃতিক ক্রম অনুসারে বাছাই করার সময় আপনি কোনও পার্থক্য লক্ষ্য করতে পারবেন না কারণ আদিম মানগুলির কোনও পরিচয় নেই। সুতরাং, কুইকসোর্টটি আদিম অ্যারেগুলির জন্য ব্যবহার করতে পারে এবং যখন এটি আরও দক্ষ হিসাবে বিবেচিত হবে তখন ব্যবহৃত হবে ¹
অবজেক্টগুলির জন্য আপনি খেয়াল করতে পারেন, যখন বিভিন্ন পরিচয় সমেত বস্তুগুলি যা তাদের equals
প্রয়োগ অনুসারে সমান হিসাবে বিবেচিত হয় বা সরবরাহিত Comparator
তাদের অর্ডার পরিবর্তন করে। অতএব, কুইকসোর্ট কোনও বিকল্প নয়। সুতরাং MergeSort এর একটি বৈকল্পিক ব্যবহৃত হয়, বর্তমান জাভা সংস্করণগুলি টিমসোর্ট ব্যবহার করে । এটি উভয়ের ক্ষেত্রেই প্রযোজ্য Arrays.sort
এবং Collections.sort
জাভা 8 এর সাথে, List
নিজেই বাছাই করা অ্যালগরিদমগুলিকে ওভাররাইড করতে পারে।
Qu কুইকসোর্টের দক্ষতার সুবিধার্থে স্থানটিতে কাজ করার সময় কম স্মৃতি দরকার। তবে এটির একটি নাটকীয়ভাবে সবচেয়ে খারাপ কেস পারফরম্যান্স রয়েছে এবং টিমসোর্টের মতো একটি অ্যারেতে প্রাক-সাজানো ডেটা চালানো যায় না।
সুতরাং, এখন-বিভ্রান্তিকরভাবে নামকরণ করা ক্লাসে থাকাকালীন বাছাই করা অ্যালগরিদমগুলি সংস্করণ থেকে সংস্করণে পুনরায় কাজ করা হয়েছিল DualPivotQuicksort
। এছাড়াও, ডকুমেন্টেশনটি ধরা পড়েনি, যা দেখায় যে এটি সাধারণভাবে একটি খারাপ ধারণা, যখন প্রয়োজন হয় না তখন কোনও নির্দিষ্টকরণের অভ্যন্তরীণভাবে ব্যবহৃত অ্যালগরিদমের নামকরণ করা।
বর্তমান পরিস্থিতি (জাভা 8 থেকে জাভা 11 সহ) নিম্নরূপ:
- সাধারণত, আদিম অ্যারেগুলির জন্য বাছাই করার পদ্ধতিগুলি নির্দিষ্ট কিছু পরিস্থিতিতে শুধুমাত্র কুইকসোর্ট ব্যবহার করবে । বড় অ্যারেগুলির জন্য, তারা টিমসোর্টের মতো প্রথমে প্রাক-সাজানো ডেটাগুলির রানগুলি সনাক্ত করার চেষ্টা করবে এবং যখন রানগুলির সংখ্যা নির্দিষ্ট প্রান্তিকের চেয়ে বেশি না হয় তখন সেগুলি মার্জ করবে। অন্যথায় তারা কুইকসোর্টে ফিরে যাবে , তবে এমন একটি বাস্তবায়ন যা ছোট রেঞ্জগুলির জন্য সন্নিবেশ সাজানোর ক্ষেত্রে ফিরে আসবে , যা কেবলমাত্র ছোট অ্যারেগুলিকেই প্রভাবিত করে না, তবে দ্রুত সাজানোর পুনরাবৃত্তিও ঘটায়।
sort(char[],…)
এবং sort(short[],…)
আরও একটি বিশেষ কেস যুক্ত করুন, অ্যারেগুলির গণনা বাছাইয়ের জন্য যার দৈর্ঘ্য একটি নির্দিষ্ট প্রান্তিকের চেয়ে বেশি
- অনুরূপভাবে, গণনা বাছাই
sort(byte[],…)
ব্যবহার করবে তবে অনেক ছোট প্রান্তিকের সাহায্যে, যা ডকুমেন্টেশনের সবচেয়ে বড় বৈপরীত্য তৈরি করে, কখনও কখনও কুইকসোর্ট ব্যবহার করে না। এটি কেবলমাত্র ছোট অ্যারে এবং অন্যথায় গণনা বাছাইয়ের জন্য সন্নিবেশ বাছাই ব্যবহার করে ।sort(byte[],…)