خب در این پست میخوام استفاده از جستجو باینری که جزء مهمترین و بهترین الگوریتمهای سرچ هستش رو بهتون آموزش بدم. به این نوع سرچ، جستجوی دو دویی هم گفته میشود. جستجو باینری در جاوا بر روی 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، ساختمان داده رو با دید استفاده در جاوا بهتون آموزش بدم.
دیدگاهتان را بنویسید