JavaRush /Java Blog /Random-TK /Kofe arakesmesi # 156 Java-da Arrays.binarySearch () usul...

Kofe arakesmesi # 156 Java-da Arrays.binarySearch () usulyny nädip ulanmaly

Toparda çap edildi
Çeşme: FreeCodeCamp Bu makala bilen Java-da Arrays.binarySearch () usulyny nähili ulanmalydygyny öwrenersiňiz. Kofe arakesmesi # 156  Java-da Arrays.binarySearch () usulyny nädip ulanmaly

Java-da Arrays.binarySearch () näme?

Arrays.binarySearch () usulynyň resmi resminamalarynda :
  • Bu usul, ikili gözleg algoritmini ulanyp, görkezilen baha üçin görkezilen baýt massiwini gözleýär.
  • Çyzgy edilmezden ozal tertipleşdirilmeli ( sort (baýt []) usuly bilen). Eger tertipleşdirilmedik bolsa, netijeler kesgitlenmez.
  • Eger massiwde görkezilen baha bilen birnäçe element bar bolsa, haýsysynyň tapyljakdygyna kepillik ýok.
Simpleönekeý sözler bilen aýdylanda, “Arrays.binarySearch”) usuly tertipli massiwde berlen elementi gözläp we tapylsa indeksini yzyna gaýtaryp biler.
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”) usuly gözlemek isleýän massiwiňizi birinji argument we ikinji açar hökmünde gözleýän açaryňyzy alýar. Aboveokardaky programmanyň netijesi:
Berlen çekimli ses indeksde: 2
Usulyň elementiň özi däl-de, tapylan elementiň görkezijisini gaýtaryp berýändigini ýadyňyzdan çykarmaň. Şeýlelik bilen, indeksde bu mysalda ulanylyşy ýaly bitewi san hökmünde saklap bilersiňiz. Düzgüne görä, usul gözlegiň başlangyç nokady we massiwiň uzynlygy gözlegiň ahyrky nokady hökmünde massiwiň birinji görkezijisini ulanýar. Bu ýagdaýda başlangyç görkeziji 0, gutarýan indeks 6-dyr. Başlangyç we gutarýan görkezijini ulanmagyň ýerine, olary özüňiz kesgitläp bilersiňiz. Mysal üçin, 2-nji indeksden 4-nji görkezijä çenli gözlemek isleseňiz, muny şeýle edip bilersiňiz:
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);

	}
}
Bu ýagdaýda, Arrays.binarySearch () usuly gözlemek isleýän massiwiňizi birinji argument, başlangyç indeks ikinji argument, ahyrky indeks üçünji, dördünji açar hökmünde alýar. Ahyrky görkezijini massiwiň uzynlygynda saklasaňyz, usul gowy işlemeli. Itöne ondan ýokary bolsaňyz, “Array” indeksini çäkden çykararsyňyz . Bu gaty ýönekeý, şeýlemi? Usul, elementiň tapylsa indeksini yzyna gaýtaryp berýär. Emma berlen elementi tapmasa näme bolýar?

Arrays.binarySearch () berlen elementi tapmasa näme bolýar?

Geliň, Arrays.binarySearch () usuly üçin resmi resminamalara ýene bir göz aýlalyň :
  • Usul, gözleg aralygyndaky açaryň görkezijisini kesgitlenen çäkde bolsa, tapýar; ýogsam alarys (- (goýmak nokady) - 1) .
  • Goýmak nokady, açaryň massiwde goýuljak nokady hökmünde kesgitlenýär: diapazondaky birinji elementiň görkezijisi açardan uly, ýa-da diapazondaky ähli elementler az bolsa, toIndex (ahyrky indeks) görkezilen açar.
  • Dolandyryş gymmaty diňe açar tapylanda 0-dan uly ýa-da deň boljakdygyny unutmaň.
Gaty düşnükli däl, şeýlemi? Birinji setirde, eger massiwde tapylsa, usulyň açaryň indeksini gözlegden yzyna gaýtaryp berjekdigi aýdylýar. Eger tapylmasa, çykyş bahasyna deň bolar (- (goýmak nokady) - 1) . Gözleg düwmesine baglylykda goýmak nokady dürli manylara eýe bolup biler. Bir massiwimiz bar diýeliň [5, 6, 7, 8, 9, 10] we 0- da gözleg açary , bu massiwde ýok. Bu ýagdaýda gözleg açary massiwiň ähli elementlerinden azdyr. Emma gözleg açaryndan has uly element 5 . Şeýlelik bilen, biziň ýagdaýymyzda goýmak nokady :
(- (gözleg düwmesinden has uly birinji elementiň görkezijisi) - 1) = (0 - 1) = -1
Muny şular ýaly kod parçasynda durmuşa geçirip bilersiňiz:
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
	}
}
Ayene-de bir massiwiň bardygyny çaklalyň [5, 6, 7, 8, 9, 10] we 12- den gözleg açary , bu massiwde ýok. Bu ýagdaýda gözleg açary, massiwiň ähli elementlerinden has uludyr. Ine, goýmak nokady şeýle bolar:
(- (gutarýan indeks (- (6) - 1) = (-6 - 1) = -7
Ahyrky görkezijini el bilen görkezmeseňiz, usul massiwiň uzynlygyny ahyrky görkeziji hökmünde ulanýandygyny ýadyňyzdan çykarmaň, bu ýagdaýda 6 . Muny şular ýaly kod parçasynda durmuşa geçirip bilersiňiz:
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
	}
}
Şeýle-de bolsa, başlangyç we ahyrky görkezijileri el bilen kesgitleseňiz, netijeler üýtgär:
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

	}
}
Gymmatlyklary özüňiz hasaplamaga synanyşyň. Şeýle hem simwollar bilen Arrays.binarySearch () usulyny ulanyp bilersiňiz :
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));

	}
}
Görkezilen gözleg açary tapylmasa şol prinsipler ulanylýar. Theöne massiwdäki nyşan bilen berlen gözleg açary arasynda deňeşdirilende, degişli nyşanlaryň ASCII kody ulanylar. .Agny, A (65) (97) -den az bolar . Programmanyňyzyň çykyşyny kesip barlanyňyzda muny göz öňünde tutuň.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION