JavaRush /جاوا بلاگ /Random-UR /کافی وقفہ نمبر 156۔ جاوا میں Arrays.binarySearch() طریقہ ...

کافی وقفہ نمبر 156۔ جاوا میں Arrays.binarySearch() طریقہ استعمال کرنے کا طریقہ

گروپ میں شائع ہوا۔
ماخذ: FreeCodeCamp اس مضمون کے ساتھ، آپ جاوا میں Arrays.binarySearch() طریقہ استعمال کرنے کا طریقہ سیکھیں گے۔ کافی وقفہ نمبر 156۔  جاوا میں Arrays.binarySearch() طریقہ استعمال کرنے کا طریقہ - 1

جاوا میں Arrays.binarySearch() کیا ہے؟

Arrays.binarySearch() طریقہ کے لیے سرکاری دستاویزات میں کہا گیا ہے:
  • یہ طریقہ بائنری سرچ الگورتھم کا استعمال کرتے ہوئے مخصوص قدر کے لیے مخصوص بائٹ سرنی کو تلاش کرتا ہے۔
  • کال کرنے سے پہلے صف کو ترتیب دیا جانا چاہیے ( sort(byte[]) طریقہ استعمال کرتے ہوئے )۔ اگر اسے ترتیب نہیں دیا گیا تو نتائج کا تعین نہیں کیا جائے گا۔
  • اگر صف میں متعین قدر کے ساتھ متعدد عناصر شامل ہیں، تو اس کی کوئی ضمانت نہیں ہے کہ کون سا مل جائے گا۔
آسان الفاظ میں، Arrays.binarySearch() طریقہ ترتیب شدہ صف میں دیئے گئے عنصر کو تلاش کر سکتا ہے اور اگر مل جائے تو اس کا اشاریہ واپس کر سکتا ہے۔
import java.util.Arrays;

public class Main {

	public static void main(String[] args) {
		char vowels[] = {'a', 'e', 'i', 'o', 'u'};

		char key = 'i';

		int foundItemIndex = Arrays.binarySearch(vowels, key);

		System.out.println("The given vowel is at index: " + foundItemIndex);

	}
}
Arrays.binarySearch() طریقہ وہ صف لیتا ہے جسے آپ پہلی دلیل کے طور پر تلاش کرنا چاہتے ہیں اور جس کلید کو آپ دوسری دلیل کے طور پر تلاش کر رہے ہیں۔ مندرجہ بالا پروگرام کا آؤٹ پٹ ہو گا:
دیا ہوا حرف انڈیکس: 2 پر ہے۔
یاد رکھیں کہ طریقہ پایا عنصر کا اشاریہ لوٹاتا ہے، نہ کہ خود عنصر۔ اس طرح آپ انڈیکس کو انٹیجر کے طور پر اسٹور کر سکتے ہیں جیسا کہ اس مثال میں استعمال کیا گیا ہے۔ پہلے سے طے شدہ طور پر، طریقہ سرنی کے پہلے انڈیکس کو تلاش کے نقطہ آغاز کے طور پر اور سرنی کی لمبائی کو تلاش کے اختتامی نقطہ کے طور پر استعمال کرتا ہے۔ اس صورت میں، ابتدائی اشاریہ 0 ہے اور اختتامی اشاریہ 6 ہے۔ پہلے سے طے شدہ آغاز اور اختتامی اشاریہ استعمال کرنے کے بجائے، آپ خود ان کی وضاحت کر سکتے ہیں۔ مثال کے طور پر، اگر آپ انڈیکس 2 سے انڈیکس 4 تک تلاش کرنا چاہتے ہیں، تو آپ اسے اس طرح کر سکتے ہیں:
import java.util.Arrays;

public class Main {

	public static void main(String[] args) {
		char vowels[] = {'a', 'e', 'i', 'o', 'u'};

		char key = 'i';
		int startIndex = 2;
		int endIndex = 4;

		int foundItemIndex = Arrays.binarySearch(vowels, startIndex, endIndex, key);

		System.out.println("The given vowel is at index: " + foundItemIndex);

	}
}
اس صورت میں، Arrays.binarySearch() طریقہ وہ صف لیتا ہے جسے آپ پہلی دلیل کے طور پر تلاش کرنا چاہتے ہیں، ابتدائی اشاریہ دوسری دلیل کے طور پر، اختتامی اشاریہ تیسرے کے طور پر، اور کلید کو چوتھی کے طور پر۔ جب تک آپ اختتامی اشاریہ کو سرنی کی لمبائی کے اندر رکھیں گے، طریقہ ٹھیک کام کرے گا۔ لیکن اگر آپ اس سے تجاوز کرتے ہیں، تو آپ کو رینج استثنا سے باہر ایک Array انڈیکس ملے گا ۔ یہ بہت آسان ہے، ٹھیک ہے؟ اگر یہ پایا جاتا ہے تو طریقہ عنصر کا اشاریہ واپس کرتا ہے۔ لیکن کیا ہوتا ہے اگر اسے دیا ہوا عنصر نہیں ملتا ہے؟

کیا ہوتا ہے جب Arrays.binarySearch() کو دیا گیا عنصر نہیں ملتا؟

آئیے Arrays.binarySearch() طریقہ کے لیے سرکاری دستاویزات پر ایک اور نظر ڈالتے ہیں :
  • طریقہ تلاش کے نتائج میں کلید کا اشاریہ تلاش کرتا ہے اگر یہ مخصوص رینج کے اندر صف میں موجود ہو۔ بصورت دیگر ہمیں (-(انسرشن پوائنٹ) - 1) ملتا ہے ۔
  • داخل کرنے کے نقطہ کی تعریف اس نقطہ کے طور پر کی گئی ہے جس پر ایک کلید کو صف میں داخل کیا جائے گا: رینج میں پہلے عنصر کا انڈیکس کلید سے بڑا ہے، یا ٹو انڈیکس (اینڈ انڈیکس) اگر رینج کے تمام عناصر اس سے کم ہوں مخصوص کلید.
  • نوٹ کریں کہ واپسی کی قیمت صرف 0 سے زیادہ یا اس کے برابر ہوگی جب کلید مل جائے گی۔
بہت واضح نہیں، ٹھیک ہے؟ پہلی سطر بتاتی ہے کہ طریقہ تلاش سے کلید کا اشاریہ واپس کر دے گا اگر یہ صف میں پائی جاتی ہے۔ اگر یہ نہیں ملتا ہے، تو آؤٹ پٹ قدر (-(انسرشن پوائنٹ) - 1) کے برابر ہوگا ۔ سرچ کلید پر منحصر ہے، اندراج پوائنٹ کے مختلف معنی ہو سکتے ہیں۔ ہم کہتے ہیں کہ ہمارے پاس ایک صف ہے [5, 6, 7, 8, 9, 10] اور ایک سرچ کلید ہے 0 ، جو واضح طور پر صف میں نہیں ہے۔ اس صورت میں، سرچ کلید صف کے تمام عناصر سے کم ہے۔ لیکن پہلا عنصر جو سرچ کلید سے بڑا ہے وہ ہے 5 ۔ اس طرح، ہمارے معاملے میں اندراج پوائنٹ ہو گا:
(-(سرچ کلید سے بڑے پہلے عنصر کا انڈیکس) - 1) = (0 - 1) = -1
آپ اسے کوڈ کے ٹکڑوں میں اس طرح نافذ کرسکتے ہیں:
package arrays;

import java.util.Arrays;

public class Main {

	public static void main(String[] args) {
		int numbers[] = {5, 6, 7, 8, 9, 10};

		System.out.println(Arrays.binarySearch(numbers, 0)); // -1
	}
}
آئیے ایک بار پھر فرض کریں کہ ہمارے پاس ایک صف ہے [5, 6, 7, 8, 9, 10] اور ایک سرچ کلید ہے 12 ، جو واضح طور پر صف میں نہیں ہے۔ اس صورت میں، سرچ کلید صف کے تمام عناصر سے بڑی ہے۔ یہاں داخل کرنے کا نقطہ اس طرح ہوگا:
(-(ختم ہونے والا اشاریہ (-(6) - 1) = (-6 - 1) = -7
یاد رکھیں کہ اگر آپ دستی طور پر اختتامی اشاریہ کی وضاحت نہیں کرتے ہیں، تو طریقہ سرنی کی لمبائی کو اختتامی اشاریہ کے طور پر استعمال کرتا ہے، جو اس صورت میں ہے 6 ۔ آپ اسے کوڈ کے ٹکڑوں میں اس طرح نافذ کرسکتے ہیں:
import java.util.Arrays;

public class Main {

	public static void main(String[] args) {
		int numbers[] = {5, 6, 7, 8, 9, 10};

		System.out.println(Arrays.binarySearch(numbers, 12)); // -7
	}
}
تاہم، اگر آپ شروع اور اختتامی اشاریہ جات کو دستی طور پر بیان کرتے ہیں تو نتائج بدل جائیں گے:
import java.util.Arrays;

public class Main {

	public static void main(String[] args) {
		int numbers[] = {5, 6, 7, 8, 9, 10};

		int startIndex = 1;
		int endIndex = 3;

		System.out.println(Arrays.binarySearch(numbers, startIndex, endIndex, 5)); // -2
		System.out.println(Arrays.binarySearch(numbers, startIndex, endIndex, 10)); // -4

	}
}
اقدار کا خود حساب لگانے کی کوشش کریں۔ آپ اس طرح کی علامتوں کے ساتھ Arrays.binarySearch() طریقہ بھی استعمال کر سکتے ہیں۔
import java.util.Arrays;

public class Main {

	public static void main(String[] args) {
		char vowels[] = {'a', 'e', 'i', 'o', 'u'};

		char key = 'i';
		int startIndex = 2;
		int endIndex = 4;

		System.out.println(Arrays.binarySearch(vowels, startIndex, endIndex, key));

	}
}
اگر مخصوص سرچ کلید نہیں ملتی ہے تو وہی اصول لاگو ہوتے ہیں۔ لیکن جب صف میں موجود کسی کردار اور دی گئی سرچ کلید کے درمیان موازنہ کیا جائے تو متعلقہ کردار کا ASCII کوڈ استعمال کیا جائے گا۔ یعنی، A (65) a (97) سے کم ہوگا ۔ اپنے پروگرام کے آؤٹ پٹ کو کراس چیک کرتے وقت اس کو مدنظر رکھیں۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION