প্রোগ্রামাররা যারা পিসি এবং ওয়েব বিকাশ থেকে মোবাইল ডিভাইস বা এমবেডেড সিস্টেমগুলির কোডিংয়ে স্যুইচ করেন তারা দেখতে পান যে তাদের নিজস্ব ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলি নির্বাচন এবং কোডিংয়ে আরও বেশি সময় ব্যয় করা হয়। কম মেমরি এবং সীমিত ডেটা স্টোরেজ সহ প্রাক-বিল্ট লাইব্রেরি বা ফ্রেমওয়ার্কের কোনও স্থান নেই। সুতরাং যাদের নিজস্ব বাছাই করার রুটিন লিখতে হবে তাদের জন্য এখানে নীচের বুদ্বুদ বাছাই করার বিষয়ে কিছু বিবেচনা দেওয়া হল।

পটভূমি

বুদ্বুদ বাছাই একটি সাধারণ অ্যালগরিদম যা মেমরির আইটেমগুলির একটি তালিকা সাজায়। একটি অ্যারে দেওয়া, কোড বারবার সংলগ্ন আইটেমগুলির প্রতিটি জোড়া তুলনা করে এবং তারা ক্রমযুক্ত না হলে সেগুলি অদলবদল করে। আর কোনও অদলবদল না হওয়া পর্যন্ত প্রক্রিয়াটি পুনরাবৃত্তি করে। বাছাই প্রক্রিয়া চলাকালীন যদি অ্যারেটি দেখা সম্ভব হত, নিম্ন মানগুলি নীচে "বুদবুদ" হবে যখন বড় মানগুলি নীচে ডুবে থাকবে। ভিজ্যুয়াল বেসিক 2010 এ এখানে সম্পর্কিত কোডটি রয়েছে:

অদলবদল করার সময় = সত্য অদলবদল = i এর জন্য মিথ্যা = 0 টিবিএল দৈর্ঘ্যের জন্য - 2 যদি টিবিএল (i)> টিবিএল (i + 1) তারপরে টিএমপি = টিবিএল (i) টিবিএল (i) = টিবিএল (আই + 1) টিবিএল (আমি) + 1) = টিএমপি অদলবদল = পরের সমাপ্তির সময় সত্য প্রান্ত If

বুদ্বুদ বাছাই করার সময় কখন চয়ন করবেন

এই অ্যালগরিদমের বিভিন্ন সুবিধা রয়েছে। এটি লিখতে সহজ, বোঝা সহজ এবং এটি কোডের কয়েকটি লাইন লাগে takes ডেটা স্থানে সাজানো হয় তাই অল্প মেমরির ওভারহেড থাকে এবং একবার বাছাই হয়ে গেলে ডেটা মেমরিতে থাকে, প্রক্রিয়াজাতকরণের জন্য প্রস্তুত। বড় অসুবিধে হ'ল এটি বাছাই করতে সময় লাগে। টেবিলের উপাদানগুলির সংখ্যা বৃদ্ধির সাথে সাথে গড় সময় প্রায় তাত্ক্ষণিকভাবে বৃদ্ধি পায়। দশ বার আইটেমের সংখ্যা বাছাই করতে প্রায় একশো গুণ সময় নেয়।

অন্যান্য অ্যারে বাছাই

বাছাই করা অ্যালগরিদমগুলি জটিলতা, গতি এবং ওভারহেডে পরিবর্তিত হয়। বুদ্বুদ সাজানোর কাজটি সর্বনিম্ন জটিল তবে ধীরতম্যগুলির মধ্যে একটি। সারণি এবং এক্সচেঞ্জ সাজানোর মতো অ্যারে-ভিত্তিক অন্যান্য ধরণের কিছুটা দ্রুত তবে আরও কোড নিন (নীচে উল্লেখগুলি দেখুন)। অ্যারে-ভিত্তিক প্রকারের প্রধান সুবিধা হ'ল তারা সর্বনিম্ন কোড ব্যবহার করে এবং সর্বনিম্ন পরিমাণে কার্যকরী মেমরি গ্রহণ করে। কয়েক শতাধিক আইটেম সহ সহজ অ্যারেগুলির জন্য এই ধরণের বিবেচনা করুন।

জটিল সাজান অ্যালগরিদম

বড় ডেটা সেটগুলিতে আরও জটিল কোড এবং আরও মেমরির প্রয়োজন হয়। দ্রুত বাছাই এবং হিপ সাজান উভয় বিভক্ত এবং তুলনা সংখ্যা অপ্টিমাইজ করতে ডেটা সেট অনুলিপি। দ্রুত বাছাই তালিকার ক্রমাগত বিভাজক হয় তারপরে এটিকে সাজানো ক্রমে পুনরায় সংযুক্ত করে। হিপ সাজানোর মাধ্যমে গাছের কাঠামোতে ডেটা অনুলিপি করা হয় এবং তারপরে ডেটা অনুলিপি করে কমানোর জন্য গাছটিকে অতিক্রম করে। উভয়ই দ্রুত এবং দক্ষ তবে আরও কোড এবং আরও অনেক বেশি কাজের স্টোরেজ নেয়। বড় ডেটা সেটগুলির জন্য এই অ্যালগরিদমগুলি চয়ন করুন।