تاریخ امروز:4 اردیبهشت 1403
جستجو باینری یا binnary search در جاوا

جستجو باینری یا Binnary Search در جاوا

خب در این پست می‌خوام استفاده از جستجو باینری که جزء مهمترین و بهترین الگوریتم‌های سرچ هستش رو بهتون آموزش بدم. به این نوع سرچ، جستجوی دو دویی هم گفته می‌شود. جستجو باینری در جاوا بر روی Collection ها (مانند ArrayList) و آرایه‌ها قابل پیاده سازی هستش و درون خود جاوا توابع آن وجود دارد.

در ابتدا از آرایه‌ها استفاده می‌کنیم. کد زیر را در نظر بگیرید:

int arr[] = {10, 20, 15, 22, 35};
Arrays.sort(arr);

یک آرایه تعریف کردیم و مقادیری در آن ریختیم. حال با دستور Arrays.binarySearch که ۲ ورودی می‌گیرد می‌توانیم سرچ کنیم:

        int arr[] = {10, 20, 15, 22, 35};
        Arrays.sort(arr);
        int key = 22;
        int res = Arrays.binarySearch(arr, key);
        if (res >= 0)
            System.out.println(key + " found at index = "
                    + res);
        else
            System.out.println(key + " Not found");

        key = 40;
        res = Arrays.binarySearch(arr, key);
        if (res >= 0)
            System.out.println(key + " found at index = "
                    + res);
        else
            System.out.println(key + " Not found");

این متد، ۲ مقدار می‌گیرد، یکی چیزی که میخوایم سرچ کنیم و یکی هم آرایه‌ای که توش سرچ رو میخوایم انجام بدیم.

مدل دوم برای Collection ها هستش. کد زیر رو در نظر بگیرید:

      List<Integer> al = new ArrayList<Integer>(); 
        al.add(1); 
        al.add(2); 
        al.add(3); 
        al.add(10); 
        al.add(20);

حال با دستور Collections.binarySearch که ۲ ورودی می‌گیره (مثل قبلی) توی Collecton جستجوی باینری انجام می‌دیم:

   List<Integer> al = new ArrayList<Integer>(); 
        al.add(1); 
        al.add(2); 
        al.add(3); 
        al.add(10); 
        al.add(20); 
   
        int key = 10; 
        int res = Collections.binarySearch(al, key); 
        if (res >= 0) 
            System.out.println(key + " found at index = " 
                                                 + res); 
        else
            System.out.println(key + " Not found"); 
  
        key = 15; 
        res = Collections.binarySearch(al, key); 
        if (res >= 0) 
            System.out.println(key + " found at index = "
                                                  + res); 
        else
            System.out.println(key + " Not found");

هر دو متد، در صورتی که مقدار جستجو وجود داشتش، index یا شماره خانه اون مقدار رو برمی‌گردونن و در صورتی که وجود نداشت، مقدار -1 برگردونده خواهد شد.

این موضوع هم بگم که تقریبا به اواسط آموزش رایگان جاوا رسیدیم. امیدوارم خدا همتی بهم بده و هرچه سریعتر این آموزش رو شروع کنم. بعد این آموزش می‌خوام Spring، پایگاه داده MySQL، ساختمان داده رو با دید استفاده در جاوا بهتون آموزش بدم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *