الگوریتم جستجو خطی یا Linear Search در پایتون

درک کردن چگونگی کارکرد الگوریتم‌ها یکی از موضوعات مهمی‌ست که برنامه‌نویسان حرفه‌ای باید اون رو حتما یاد بگیرند. برای همین موضوع شما به عنوان یک برنامه نویس حرفه‌ای پایتون حتما باید با تک تک الگوریتم‌ها و چگونگی پیاده‌سازی‌شون آشنا بشید.

زمانی که ما قصد جستجو کردن یک آیتم در یک لیست را داشته باشیم دقیقا کامپیوتر این کار را به چه صورتی انجام می‌دهد؟ برای انجام چنین کاری الگوریتم‌های جستجوی مختلفی بوجود آمده‌اند که من توی این بلاگ پست می‌خوام شما رو با اولین و ساده‌ترین موردش که جستجوی خطی هستش آشنا بکنم.

جستجو خطی

بگذارید کارکرد این الگوریتم رو در یک مثال براتون توضیح بدم. تصور کنید که شما لیستی شامل اعداد یک تا ده رو دارید و می‌خواید عدد ۶ رو در این لیست پیدا کنید. زمانی که عملیات جستجو رو انجام می‌دید در الگوریتم جستجو خطی از ابتدا یا انتها ایندکس‌ها به صورت تک به تک بررسی می‌شن و در نهایت به ایندکس مربوط به عدد ۶ می‌رسه. پس در این جستجو ایندکس‌ها به صورت تک به تک بررسی می‌شن و در بسیاری از حالت‌ها این الگوریتم بسیار کُند عمل می‌کند.

الگوریتم جستجو خطی

برای پیاده‌سازی این حالت در پایتون ما به یک لیست نیاز داریم (یا هر دیتا استراکچر دیگه‌ای که iterable باشه) و یک مقدار هدف یا چیزی که دنبال‌ش هستیم.

در مرحله بعدی باید تک تک آیتم‌های لیست رو با مقدار هدف‌مون مقایسه بکنیم اگه که برابر بود در نهایت می‌تونیم اندیس اون مقدار رو برگردونیم و اگر نتونستیم مقدار None رو برخواهیم گردوند. به کد نمونه زیر دقت کنید.

def linear_search(list, target):
    '''
    Return list index position if target found, else return None!
    '''
    
    for i in range(0, len(list)):
        if list[i] == target:
            return i
    return None

def varify(index):
    if index is not None:
        print('We found index at: ', index)
    else:
        print('We cant find the index')


numbers = [x for x in range(0,200,2)]

search = linear_search(numbers, 100)

varify(search)

دوره آموزش پیشرفته پایتون

پایتون زبان برنامه نویسی مورد علاقه بنده هستش که تقریبا تمام کارهای مربوط به برنامه نویسی رو باهاش انجام میدم. دوره های آموزش مقدماتی پایتون خیلی زیادی توی اینترنت بود و چیزی که من خیلی کم پیدا کردم یه دوره درست و حسابی مبتنی بر آموزش پیشرفته پایتون بود.

آموزش پیشرفته پایتون - ارسطو عباسی

به همین خاطر گفتم که خب چه بهتر که نیست 🙂 من درستش کنم. و درستش کردم. دوره‌ای با اسم دوره آموزش پیشرفته پایتون.

می‌دونم که ما سرفصل مشخصی برای دوره های پیشرفته نداریم و حقیقتا این هم خیلی سخته که بخوایم یک سرفصل برای این موضوع درست کنیم چون نیاز به مطالعه و تحقیقات زیادی داره و اصلا پیشرفته یعنی چی؟

به همین دلیل من تصمیم گرفتم تا شکل ارائه دوره رو یه ذره تغییر بدم. برای آشنایی با این ساختار ادامه این مطلب رو مطالعه کنید.

ساختار دوره

ساختار دوره از پنج سرفصل اصلی با عناوین زیر و یک سرفصل متغیر با عنوان «آموزش موضوعات پیشرفته‌تر» تشکیل شده.

  • آموزش برنامه نویسی شئ‌گرا
  • کار با توابع و Iterableها
  • آموزش SQLنویسی در پایتون
  • آموزش وب اسکرپینگ در پایتون
  • آموزش توسعه سمت سرور با فلسک
  • سرفصل متغیر: آموزش موضوعات پیشرفته‌تر

پنج سرفصل اول تکلیف‌شون مشخصه و معلومه که چه چیزی قراره آموزش داده بشه اما سرفصل ششم بحثش یه ذره فرق میکنه.

توی سرفصل ششم ما موضوعات متفرقه مثل برنامه نویسی مالتی تردینگ، Regex، تستینگ، پردازش تصویر، کار با فایل‌های zip و csv و… رو آموزش خواهیم داد و این بخش هم به صورت روزانه و هفتگی بروزرسانی میشه. در نتیجه این دوره فکر نکنم به این زودیا تموم بشه و باید مدام منتظر بروزرسانی‌های جدیدی ازش باشید.

برای آشنایی بیشتر با این دوره بهتون پیشنهاد می‌کنم فیلم زیر رو نگاه کنید و بعد وارد لینک دوره آموزش پیشرفته پایتون روی وبسایت راکت بشید.

توی صفحه «درباره من» می‌تونید بیشتر در رابطه با من به عنوان مدرس این دوره آشنا بشید