JavaRush /Blog Jawa /Random-JV /Ngopi #156. Carane nggunakake Arrays.binarySearch () cara...

Ngopi #156. Carane nggunakake Arrays.binarySearch () cara ing Jawa

Diterbitake ing grup
Source: FreeCodeCamp Kanthi artikel iki, sampeyan bakal sinau carane nggunakake Arrays.binarySearch () cara ing Jawa. Ngopi #156.  Carane nggunakake Arrays.binarySearch() cara ing Jawa - 1

Apa Arrays.binarySearch() ing Jawa?

Dokumentasi resmi kanggo metode Arrays.binarySearch() nyatakake:
  • Cara iki nggoleki array byte sing ditemtokake kanggo nilai sing ditemtokake nggunakake algoritma telusuran binar.
  • Array kudu diurutake (nggunakake cara sort(byte[]) ) sadurunge nelpon. Yen ora diurutake, asil ora bakal ditemtokake.
  • Yen array ngemot pirang-pirang unsur kanthi nilai sing ditemtokake, ora ana jaminan sing bakal ditemokake.
Ing tembung prasaja, cara Arrays.binarySearch () bisa nelusuri unsur diwenehi ing Uploaded diurutake lan bali indeks yen ketemu.
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);

	}
}
Cara Arrays.binarySearch () njupuk array sing pengin digoleki minangka argumen pisanan lan kunci sing digoleki minangka argumen kapindho. Output saka program ing ndhuwur bakal dadi:
Aksara swara ana ing indeks: 2
Elinga yen cara kasebut ngasilake indeks saka unsur sing ditemokake, dudu unsur kasebut dhewe. Kanthi cara iki sampeyan bisa nyimpen indeks minangka integer kaya sing digunakake ing conto iki. Kanthi gawan, cara iki nggunakake indeks pisanan saka array minangka titik wiwitan panelusuran lan dawa array minangka titik pungkasan panelusuran. Ing kasus iki, indeks wiwitan 0 lan indeks pungkasan 6. Tinimbang nggunakake indeks wiwitan lan pungkasan standar, sampeyan bisa nemtokake dhewe. Contone, yen sampeyan pengin nggoleki saka indeks 2 nganti indeks 4, sampeyan bisa nindakake kaya iki:
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);

	}
}
Ing kasus iki, Arrays.binarySearch () cara njupuk Uploaded sampeyan pengin nelusuri minangka argumen pisanan, indeks wiwitan minangka argumen kaloro, indeks pungkasan minangka katelu, lan tombol minangka papat. Anggere sampeyan njaga indeks pungkasan ing dawa array, cara kasebut kudu apik. Nanging yen sampeyan ngluwihi, sampeyan bakal entuk indeks Array sing ora ana pengecualian . Iku cukup prasaja, bener? Cara ngasilake indeks saka unsur yen ditemokake. Nanging apa sing kedadeyan yen ora nemokake unsur sing diwenehake?

Apa mengkono nalika Arrays.binarySearch () ora nemokake unsur diwenehi?

Ayo goleki maneh dokumentasi resmi kanggo metode Arrays.binarySearch() :
  • Cara kasebut nemokake indeks kunci ing asil panelusuran yen ana ing larik ing sawetara sing ditemtokake; yen ora, kita entuk (-(titik selipan) - 1) .
  • Titik sisipan ditetepake minangka titik ing ngendi kunci bakal dilebokake menyang array: indeks saka unsur pisanan ing sawetara luwih gedhe tinimbang tombol, utawa toIndex (indeks pungkasan) yen kabeh unsur ing sawetara kurang saka kunci sing ditemtokake.
  • Elinga yen nilai bali mung bakal luwih gedhe utawa padha karo 0 nalika tombol ditemokake.
Ora cetha banget, ta? Baris pisanan nyatakake yen cara kasebut bakal ngasilake indeks kunci saka telusuran yen ditemokake ing array. Yen ora ditemokake, output bakal padha karo nilai (-(titik sisipan) - 1) . Gumantung ing tombol telusuran, titik sisipan bisa duwe makna sing beda. Ayo kita duwe array [5, 6, 7, 8, 9, 10] lan tombol telusuran 0 , sing jelas ora ana ing array. Ing kasus iki, tombol telusuran kurang saka kabeh unsur array. Nanging unsur pisanan sing luwih gedhe tinimbang tombol telusuran yaiku 5 . Mangkono, ing kasus kita titik selipan bakal:
(-(indeks unsur pisanan luwih gedhe tinimbang kunci telusuran) - 1) = (0 - 1) = -1
Sampeyan bisa ngetrapake iki ing potongan kode kaya iki:
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
	}
}
Ayo nganggep maneh yen kita duwe array [5, 6, 7, 8, 9, 10] lan tombol telusuran 12 , sing jelas ora ana ing array. Ing kasus iki, tombol telusuran luwih gedhe tinimbang kabeh unsur array. Ing kene titik sisipan bakal kaya mangkene:
(-(indeks pungkasan (-(6) - 1) = (-6 - 1) = -7
Elinga yen sampeyan ora nemtokake indeks pungkasan kanthi manual, metode kasebut nggunakake dawa array minangka indeks pungkasan, sing ing kasus iki yaiku 6 . Sampeyan bisa ngetrapake iki ing potongan kode kaya iki:
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
	}
}
Nanging, asil bakal ganti yen sampeyan nemtokake indeks wiwitan lan pungkasan kanthi manual:
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

	}
}
Coba ngetung nilai dhewe. Sampeyan uga bisa nggunakake cara Arrays.binarySearch () karo simbol kaya iki:
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));

	}
}
Prinsip sing padha ditrapake yen kunci telusuran sing ditemtokake ora ditemokake. Nanging nalika mbandhingake antarane karakter ing array lan tombol telusuran sing diwenehake, kode ASCII saka karakter sing cocog bakal digunakake. Tegese, A (65) bakal kurang saka (97) . Njupuk akun iki nalika mriksa salib output program.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION