আমি ও (এন) এর সাথে জানি, আপনার সাধারণত একক লুপ থাকে; ও (এন ^ 2) একটি ডাবল লুপ; ও (এন ^ 3) একটি ট্রিপল লুপ ইত্যাদি, কীভাবে ও (লগ এন) সম্পর্কে?
আপনি এখানে সত্যিই এটি ভুল পথে চলছেন। আপনি কোনও স্মরণীয়করণের চেষ্টা করছেন যে কোন বড়-ও এক্সপ্রেশনটি প্রদত্ত অ্যালগরিদমিক কাঠামোর সাথে যায়, তবে আপনার আলগোরিদমের প্রয়োজনীয় অপারেশনগুলির সংখ্যাটি গুনতে হবে এবং ইনপুটটির আকারের সাথে এটি তুলনা করতে হবে। একটি সম্পূর্ণ অ্যালগরিদম যা তার সম্পূর্ণ ইনপুটটির উপরে লুপ হয় তার ও (এন) কর্মক্ষমতা থাকে কারণ এটি লুপ এন বার চালায়, কারণ এটির একক লুপ নেই। ও (লগ এন) পারফরম্যান্স সহ এখানে একটি লুপ রয়েছে:
for (i = 0; i < log2(input.count); i++) {
doSomething(...);
}
সুতরাং, যে কোনও অ্যালগরিদম যেখানে প্রয়োজনীয় ক্রিয়াকলাপগুলির সংখ্যার ইনপুট আকারের লগারিদমের ক্রম হয় তা হ'ল (লগ এন)। বিগ-ও বিশ্লেষণ আপনাকে যে গুরুত্বপূর্ণ বিষয়টি বলেছে তা হ'ল কীভাবে কোনও অ্যালগরিদমের কার্য সম্পাদনের সময় ইনপুটটির আকারের সাথে সম্পর্কিত হয়: আপনি যদি ইনপুটটির আকার দ্বিগুণ করেন তবে অ্যালগরিদম আরও 1 টি পদক্ষেপ নেয় (ও (লগ এন)) , দ্বিগুণ পদক্ষেপ (ও (এন)), বহু পদক্ষেপের দ্বিগুণ (ও (এন ^ 2)), ইত্যাদি
এটি অভিজ্ঞতা থেকে জানতে সাহায্য করে যে বারবার তাদের ইনপুটটিকে পার্টিশন করে এমন আলগোরিদিমগুলি তাদের কার্য সম্পাদনের উপাদান হিসাবে 'লগ এন' করে? অবশ্যই। তবে বিভাজনটির জন্য সন্ধান করবেন না এবং এই সিদ্ধান্তে ঝাঁপুন না যে অ্যালগোরিদমের কার্যকারিতা হ'ল (লগ এন) - এটি ও (এন লগ এন) এর মতো কিছু হতে পারে, যা বেশ আলাদা different