Saeid Safaei Loader Logo Saeid Safaei Loader Animated
لطفا شکیبا باشید
0

سعیدصفایی سعیدصفایی

سعید صفایی
آشنایی با مفهوم Binary Search

Binary Search

جستجوی دودویی یک الگوریتم جستجو است که داده‌های مرتب‌شده را به نصف تقسیم می‌کند و در هر مرحله تنها نیمی از داده‌ها را بررسی می‌کند.

Saeid Safaei Binary Search

جستجوی دودویی (Binary Search) یکی از الگوریتم‌های جستجوی مؤثر و کارآمد است که برای یافتن یک عنصر خاص در یک لیست مرتب‌شده استفاده می‌شود. الگوریتم جستجوی دودویی با مقایسه عنصر مورد نظر با عنصر میانه (middle) لیست، مسیری را پیدا می‌کند که به‌طور پیوسته بخش‌های غیرضروری از لیست را حذف می‌کند. این فرآیند تا زمانی که عنصر مورد نظر پیدا شود یا لیست به انتها برسد ادامه می‌یابد.

الگوریتم جستجوی دودویی به دلیل استفاده از تقسیم و غلبه، زمان اجرای بسیار سریع‌تری نسبت به جستجوی خطی دارد. زمان اجرای آن به صورت O(log n) است، در حالی که جستجوی خطی زمان اجرای O(n) دارد. این امر جستجوی دودویی را برای جستجو در مجموعه داده‌های بزرگ بسیار کارآمد می‌کند.

الگوریتم جستجوی دودویی تنها بر روی داده‌های مرتب‌شده (sorted data) کار می‌کند. اگر داده‌ها به ترتیب صعودی یا نزولی مرتب نشده باشند، باید ابتدا آن‌ها را مرتب کرد تا بتوان از جستجوی دودویی استفاده کرد.

در زبان‌های برنامه‌نویسی مختلف مانند Python، Java و C++، جستجوی دودویی معمولاً به شکل زیر پیاده‌سازی می‌شود. در اینجا یک مثال از پیاده‌سازی جستجوی دودویی در Python آورده شده است:

def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:

return mid
elif arr[mid] < target:

low = mid + 1
else:

high = mid - 1
return -1 # عنصر پیدا نشد

در این مثال، تابع binary_search دو ورودی دریافت می‌کند: یک آرایه مرتب‌شده و عنصر هدف که باید در آرایه جستجو شود. ابتدا مقادیر low و high تعیین می‌شوند که نشان‌دهنده ابتدای و انتهای آرایه هستند. سپس در هر مرحله از حلقه، عنصر میانه بررسی می‌شود و بسته به مقایسه آن با عنصر هدف، بخش‌هایی از آرایه نادیده گرفته می‌شود. اگر عنصر پیدا شود، اندیس آن بازگردانده می‌شود؛ در غیر این صورت، تابع -1 را باز می‌گرداند که نشان‌دهنده عدم وجود عنصر در آرایه است.

در زبان Java، جستجوی دودویی به صورت زیر پیاده‌سازی می‌شود:

public class BinarySearch {
public static int binarySearch(int[] arr, int target) {
int low = 0;
int high = arr.length - 1;

while (low <= high) {

int mid = (low + high) / 2;

if (arr[mid] == target) {


return mid;

} else if (arr[mid] < target) {


low = mid + 1;

} else {


high = mid - 1;

}
}

return -1; // عنصر پیدا نشد
} }

در اینجا نیز همانطور که در Python مشاهده می‌شود، تابع binarySearch آرایه مرتب‌شده و عنصر هدف را به عنوان ورودی دریافت کرده و الگوریتم جستجوی دودویی را اجرا می‌کند.

الگوریتم جستجوی دودویی به دلیل کارایی بالای خود در جستجو در مجموعه‌های داده بزرگ، در بسیاری از سیستم‌ها و برنامه‌ها به‌ویژه در جستجو در پایگاه‌داده‌ها و ساختارهای داده‌ای مانند درخت‌ها و لیست‌های مرتب‌شده به کار می‌رود.

برای اطلاعات بیشتر، می‌توانید از سایت saeidsafaei.ir و اسلایدهای محمد سعید صفایی بهره‌برداری کنید.

اسلاید آموزشی

مقدمات برنامه نویسی

مقدمات برنامه نویسی
مبانی کامپیوتر و برنامه سازی

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

مقالات آموزشی برای آشنایی با اصطلاحات دنیای کامپیوتر

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

الگوریتم‌هایی هستند که برای شبیه‌سازی و یادگیری ماشین استفاده می‌شوند، به ویژه در یادگیری عمیق و شبیه‌سازی هوش مصنوعی.

سیستم‌های دفترکل توزیع‌شده (DLS) به استفاده از شبکه‌های غیرمتمرکز برای ذخیره‌سازی و مدیریت داده‌ها با شفافیت و امنیت اشاره دارد.

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

گردوغبار هوشمند به سنسورها و دستگاه‌های ریز اشاره دارد که در مقیاس میکرو برای جمع‌آوری اطلاعات از محیط اطراف استفاده می‌شوند.

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

پروتکلی مشابه با OSPF که برای مسیریابی در لایه ۲ مدل OSI طراحی شده است.

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

حلقه do while مشابه با حلقه while است، با این تفاوت که ابتدا دستور اجرا می‌شود و سپس شرط بررسی می‌شود.

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

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

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

حلقه در الگوریتم‌ها به معنای تکرار یک یا چند مرحله به تعداد مشخص است تا زمانی که یک شرط خاص برقرار شود.

مدل انتقال داده‌ها به صورت سلول‌های کوچک با اندازه ثابت برای ارائه کیفیت سرویس مناسب در شبکه‌های چندرسانه‌ای.

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

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

بینایی ربات‌ها به فناوری‌هایی اطلاق می‌شود که به ربات‌ها امکان شبیه‌سازی دید انسان را می‌دهند تا محیط اطرافشان را درک کنند.

روش دسترسی به رسانه که در آن منابع فرکانسی به‌طور ثابت بین دستگاه‌ها تقسیم می‌شود.

فاکتوریل یک عدد n با ضرب آن در تمام اعداد صحیح مثبت کوچک‌تر از خودش تعریف می‌شود. این مقادیر به‌طور معمول برای محاسبات ریاضی یا بازگشتی استفاده می‌شوند.

پورت هر سوئیچ که نزدیک‌ترین مسیر به Root Bridge را دارد و داده‌ها را به سمت آن هدایت می‌کند.

تعداد تکرارهای یک موج در یک ثانیه، که معمولاً بر حسب هرتز (Hz) اندازه‌گیری می‌شود.

شبکه‌های عصبی مصنوعی (ANN) به مدل‌های ریاضی اشاره دارد که از ساختار مغز انسان الهام گرفته‌اند و برای پردازش داده‌ها استفاده می‌شوند.

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

افزایش مقدار یک متغیر به طور منظم در هر بار اجرا، که معمولاً در حلقه‌ها برای شمارش یا تغییر مقدار استفاده می‌شود.

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

دروازه منطقی NOT که عملیات معکوس را انجام می‌دهد و ورودی 1 را به 0 و ورودی 0 را به 1 تبدیل می‌کند.

تبدیل عدد از مبنای هشت به مبنای ده که شامل محاسبه وزن هر رقم و جمع آن‌ها است.

محاسبات با عملکرد بالا به استفاده از قدرت پردازشی پیشرفته برای حل مسائل پیچیده و پردازش داده‌های بسیار بزرگ اطلاق می‌شود.

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

دستور else if برای بررسی چندین شرط استفاده می‌شود. این دستور بعد از دستور if قرار می‌گیرد و به شما این امکان را می‌دهد که شرایط مختلف را بررسی کنید.

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

پروتکلی که برای ارتباطات شبکه‌های محلی (LAN) از آن استفاده می‌شود.

اپلیکیشن‌های بومی ابری به برنامه‌هایی اطلاق می‌شود که به طور ویژه برای محیط‌های ابری طراحی شده‌اند.

شبکه‌های مجازی‌شده به شبکه‌هایی اطلاق می‌شود که از فناوری مجازی‌سازی برای ایجاد و مدیریت منابع شبکه استفاده می‌کنند.

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

بکشید مشاهده بستن پخش
Saeid Safaei Scroll Top
0%