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

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

 

دو نوع جستجوی پرکاربرد در پایتون وجود دارد:

  • Linerar search
  • Binary search

 

هر دو تکنیک به طور گسترده برای جستجوی یک عنصر در لیست داده شده استفاده می شوند.

 

 

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

جستجوی خطی روشی برای یافتن عناصر در یک لیست است. به آن جستجوی متوالی(sequential search) نیز می گویند. این ساده ترین الگوریتم جستجو است زیرا عنصر مورد نظر را به صورت متوالی جستجو می کند.

 

هر عنصر را با مقداری که ما به دنبال آن هستیم مقایسه می کند. اگر هر دو مطابقت داشته باشند، عنصر پیدا می شود و الگوریتم موقعیت ایندکس کلید را برمی گرداند.

 

بیایید با یک مثال الگوریتم جستجوی خطی را درک کنیم. قرار است در لیست زیر به دنبال عدد 7 بگردیم:

[1, 3, 5, 4, 7, 9]

 

برای پیدا کردن آیتم مورد نظر از ابتدای لیست شروع کرده و هر آیتم را مقایسه میکنیم:

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

 

تا زمانی که آیتم مورد نظر پیدا نشود، به جستجو ادامه میدهیم:

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

 

پیاده سازی الگوریتم خطی در پایتون به شکل زیر خواهد بود:

def linear_search(array, element):
    for i in range(len(array)):
        if array[i] == element:
            return i
    return -1

 

بیایید کد بالا را توضیح دهیم:

  1. در خط اول یک تابع به نام linear_search ایجاد کردیم که دو آرگومان میگیرد. آرگومان اول یک دنباله و آرگومان دوم آیتمی است که به دنبال آن میگردیم.
  2. در خط دوم به تعداد آیتم‌ های دنباله حلقه for خواهیم داشت.
  3. در خط سوم هر آیتم دنباله را با آیتم مد نظر بررسی میکنیم.
  4. در خط چهارم اگر آیتم مورد نظر پیدا شد، ایندکس آن را برمیگردانیم.
  5. در خط پنجم اگر آیتم مورد نظر پیدا نشد، عدد منفی یک را برمیگردانیم.

 

 

 #  پیچیدگی زمانی الگوریتم جستجوی خطی

پیچیدگی زمانی الگوریتم جستجوی خطی به شکل زیر است:

  • در بهترین حالت برابر با (1)O
  • در بدترین حالت برابر با (n)O

 

الگوریتم جستجوی خطی برای لیست کوچک (کمتر از 100 آیتم) مناسب است زیرا هر آیتم را برای بدست آوردن عدد مورد نظر بررسی می کند. فرض کنید 10.000 آیتم وجود دارد و آیتم مورد نظر در آخرین ایندکس باشد، این کار با مقایسه با هر عنصر لیست زمان زیادی را صرف می کند.

 

برای رسیدن به نتیجه سریع می توانیم از الگوریتم جستجوی دودویی(binary) استفاده کنیم.

 

 



0

intro

5:18

رایگان

1

complexity

9:4

رایگان

2

constant complexity

5:13

رایگان

3

log complexity

5:17

رایگان

4

linear complexity

3:49

رایگان

5

polynomial complexity

3:5

رایگان

6

exponential complexity

3:58

رایگان

7

limit

10:25

رایگان

8

top one

8:57

رایگان

9

caesar cipher

19:43

رایگان

10

search insert

9:41

رایگان

11

is isomorphic

10:23

رایگان

12

a1z26 cipher

6:35

رایگان

13

bead sort

8:56

رایگان

14

zig zag iterator

6:37

رایگان

15

move zeros

2:52

رایگان

16

remove min

4:56

رایگان

17

OneTimePad cipher

9:32

رایگان

18

two sum

5:7

رایگان

19

rotate

6:10

رایگان

20

search range

9:7

رایگان

21

linear search

4:34

رایگان

22

binary search

6:45

رایگان

23

first occurrence

4:6

رایگان

24

last occurrence

5:28

رایگان

25

done

1:42

رایگان

دوره های پیشنهادی

دوره آموزش DRF جنگو
دوره آموزش DRF جنگو
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش سوکت نویسی (socket) در پایتون
دوره آموزش سوکت نویسی (socket) در پایتون
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش Matplotlib پایتون
دوره آموزش Matplotlib پایتون
تکمیل ضبط
امیرحسین بیگدلو



ارسال نظر


فعلا نظری برای نمایش وجود ندارد
مونگارد