আপনি যা জিজ্ঞাসা করছেন তা আপনার সীমাবদ্ধতার কারণে সম্ভব।
বিশ্লেষণ
একটি হ্যাশ টেবিলের শক্তি হ'ল এটির দ্রুত অনুসন্ধান এবং সন্নিবেশের গতি। এই গতিটি পেতে, অবশ্যই অবশ্যই টেবিলের যেকোন অর্ডলেন্সকে ত্যাগ করতে হবে: অর্থাত এন্ট্রিগুলি সমস্ত ঝাঁকিয়ে পড়েছে। একটি তালিকা একটি টেবিল এন্ট্রি হিসাবে ব্যবহারের জন্য গ্রহণযোগ্য কারণ ট্র্যাভার্সাল ও (এন) থাকাকালীন তালিকাগুলি হ্যাশ টেবিলটি যথেষ্ট বড় এবং ধরে টেবিলের মধ্যে থাকা অবজেক্টগুলি ভাল মানের হ্যাশিং অ্যালগরিদম ব্যবহার করে হ্যাশ করে ধরে নেওয়া স্বল্প বলে ধরে নিয়েছে।
বাইনারি অনুসন্ধান ট্রি (বিএসটি) এর ও (লগ 2 এন) এ দ্রুত সন্নিবেশ এবং অনুসন্ধান রয়েছে । এটি এটি সংরক্ষণ করে এমন উপাদানগুলির উপরও একটি বিধিনিষেধ আরোপ করে: উপাদানগুলিকে অর্ডার করার কিছু উপায় থাকতে হবে। প্রদত্ত দুটি উপাদান একটি এবং বি গাছ সঞ্চিত, এটা নির্ধারণ করা সম্ভব হওয়া আবশ্যক যদি একটি সামনে আসে বি অথবা যদি তারা সমতুল্য অর্ডার রয়েছে।
একটি হ্যাশ টেবিল এ জাতীয় কোনও বিধিনিষেধ আরোপ করে না: একটি হ্যাশ টেবিলের উপাদানগুলির দুটি বৈশিষ্ট্য থাকতে হবে। প্রথমত, তারা সমতুল্য কিনা তা নির্ধারণের জন্য অবশ্যই একটি উপায় থাকতে হবে; দ্বিতীয়ত, একটি ডিস্ট্রিমেন্টিক হ্যাশ কোড গণনা করার উপায় থাকতে হবে। অর্ডার কোনও প্রয়োজন হয় না।
যদি আপনার হ্যাশ টেবিলের উপাদানগুলির একটি আদেশ থাকে, তবে আপনি একই হ্যাশ কোড (সংঘর্ষগুলি) সহ অবজেক্টগুলি ধরে রাখতে হ্যাশ টেবিল এন্ট্রি হিসাবে একটি বিএসটি ব্যবহার করতে পারেন। তবে, বিএসটি-এর ও (লগ 2 এন) অনুসন্ধান এবং সন্নিবেশের কারণে, এর অর্থ পুরো কাঠামোর (হ্যাশ টেবিল প্লাস বিএসটি) সবচেয়ে খারাপ ক্ষেত্রে টেবিল এন্ট্রি হিসাবে তালিকা ব্যবহারের চেয়ে প্রযুক্তিগতভাবে আরও ভাল। বিএসটি বাস্তবায়নের উপর নির্ভর করে এর জন্য তালিকার চেয়ে বেশি স্টোরেজ প্রয়োজন হবে, তবে সম্ভবত এর চেয়ে বেশি কিছু নয়।
দয়া করে নোট করুন যে সাধারণত একটি বিএসটি-র ওভারহেড এবং আচরণ হ্যাশ টেবিল বালতি হিসাবে বাস্তব বিশ্বের পরিস্থিতিতে টেবিলে কিছুই এনে দেয় না , এজন্য একটি তালিকার তাত্ত্বিক দুর্বল অভিনয় গ্রহণযোগ্য acceptable অন্য কথায়, হ্যাশ টেবিল প্রতিটি তালিকায় কম পরিমাণ আইটেম রেখে (বালতি) তালিকার দুর্বলতার জন্য ক্ষতিপূরণ দেয়। তবে : সমস্যাটি সুনির্দিষ্টভাবে জানিয়েছে যে হ্যাশ টেবিলটি আকারে বাড়তে পারে না এবং হ্যাশ টেবিলের তুলনায় সংঘর্ষগুলি প্রায়শই ঘন ঘন হয়।
বাস্তবায়ন
আমি এখানে কোড রাখছি না কারণ সত্যই এটি সত্যিই প্রয়োজনীয় নয় এবং আপনি যেভাবে কোনও ভাষা দেননি।
আমি যা করব তা হ'ল আপনার ভাষার স্ট্যান্ডার্ড লাইব্রেরিতে যে কোনও স্ট্যান্ডার্ড হ্যাশ টেবিলটি কোনও নতুন শ্রেণিতে অন্তর্ভুক্ত করা উচিত তা অনুলিপি করুন, তারপরে টেবিলের বালতির ধরণটি তালিকা থেকে একটি গাছে পরিবর্তন করুন। ভাষা এবং এটির মানক লাইব্রেরির উপর নির্ভর করে এটি করা খুব তুচ্ছ জিনিস হতে পারে।
সাধারণত আমি কপি করে এইভাবে কোডিং আটকে দেব না। তবে যুদ্ধের পরীক্ষিত ডেটা কাঠামো খুব দ্রুত পাওয়ার এটি একটি সহজ উপায় ।