JavaRush /جاوا بلاگ /Random-SD /ڪافي بريڪ #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 index out of range exception . اهو تمام سادو آهي، صحيح؟ اهو طريقو عنصر جي انڊيڪس کي واپس ڏئي ٿو جيڪڏهن اهو مليو آهي. پر ڇا ٿيندو جيڪڏهن اهو ڏنل عنصر نه مليو؟

ڇا ٿيندو جڏهن 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) ھڪڙو (97) کان گھٽ ٿيندو . هن کي اڪائونٽ ۾ وٺو جڏهن توهان جي پروگرام جي آئوٽ کي ڪراس چيڪ ڪريو.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION