10-Lekciya
.pdfMassivlerdi sortirovka qılıw hám izlew algoritmleri. Arrays klası
Joba:
1.Massivlerdi sortirovka qılıw;
2.Massivlerde izlew;
3.Arrays klası;
4.Mısallar.
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Massivti sortirovka qılıw
10 elementten turıwshı pútin massiv berilgen:
int[] sanlar = {385,15,57,256,77,-37,14,91,-219,-7};
Bizdiń wazıypamız massiv elementlerin ósiw tártibinde sortirovka qılıw kerek. Yaǵnıy [-219, -37, -7, 14, 15, 57, 77, 91, 256, 385] kóriniste juwapqa shıǵarıw kerek.
15, 385 ten kishkene, ornın almastıramız
385 |
15 |
57 |
256 |
77 |
-37 |
14 |
91 |
-219 |
-7 |
256, 57 den úlken, ózgertirilmeydi
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Kóbiksheli sortirovka algoritmi
Onı tómendegishe ámelge asıramız:
Hár bir elementti óz-ara salıstıramız
([0] menen [1], [1] menen [2], [2] menen [3] hám t.b.);
Eger dáslepki element keyingisinen úlken bolsa, olardıń ornın almastıramız hám keyingisine ótemiz;
Eger kishi bolsa, ózgerissiz qaldıramız hám keyingisine ótemiz.
Solay etip, birinshi ótiwden soń eń úlken elementimiz (385) eń aqırǵı yacheykaǵa jaylasadı.
Keyin jáne 0 indeksten baslap massiv elementlerinen ótemiz, biraq aqırǵıdan aldınǵı elementke shekem. Bunda aqırǵıdan aldınǵı yacheykada keyingi eń úlken san (256) jaylasadı.
Bul algoritmdi massiv elementler uzınlıǵınan birge kem tákirarlaymız
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Massivti sortirovka qılıwdıń javada programması
Javada kod tómendegishe boladı:
for (int i = sanlar.length - 1; i > 0; i--) { for (int j = 0; j < i; j++) {
if (sanlar[j] > sanlar[j + 1]) { int temp = sanlar[j]; sanlar[j] = sanlar[j + 1]; sanlar[j + 1] = temp;
}
}
}
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Massiv elementlerin nusqalaw
Qandayda bir massiv berilgen:
int[] sanlar = {385,15,57,256,77,-37,14,91,-219,-7};
Biz usı massivti basqa bir massivke nusqalawımız kerek bolsın.
int[] sanlarCopy = new int[10];
Cikl operatorınan paydalanıp onı tómendegishe isleymiz:
int[] sanlarCopy = new int[10];
for (int i = 0; i < sanlar.length; i++) { sanlarCopy[i] = sanlar[i];
}
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Arrays klası
Joqarıda kórsetilgen máselelerdi islew qıyın emes. Biraq, bunday túrdegi máselelerdi kóp paydalanǵanda cikllar kóbeyiwi, programma kodı úlkeyip ketiwi múmkin. Java jaratıwshıları bunday máselelerdi sheshiwdi esapqa alıp, álleqashan massivler menen islew ushın arnalǵan java.util.Arrays klasın (Arrays ingliz tilinde massivler degen) islep shıqqan. Bul klassqa eń keń tarqalǵan máselelerdi sheshiw metodları kiritilgen. Mısalı, massivti sortirovka qılıw bir qatarda ámelge asırıladı:
int[] sanlar = {385,15,57,256,77,-37,14,91,-219,-7}; Arrays.sort(sanlar);
// [-219, -37, -7, 14, 15, 57, 77, 91, 256, 385]
Arrays.sort(massiv) massiv elementlerin ósiw tártibinde sortirovka qılıp beredi
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Arrays klası
Massiv elementlerin nátiyjege shıǵarıw ushın Arrays klasındaǵı jáne bir metod toString() paydalanıladı.
int[] sanlar = {385,15,57,256,77,-37,14,91,-219,-7}; System.out.println(Arrays.toString(sanlar));
Arrays klası arqalı bir massivti ekinshisine nusqalaw ańsat ámelge asırıladı.
int[] sanlar = {385,15,57,256,77,-37,14,91,-219,-7}; int[] sanlarCopy=Arrays.copyOf(sanlar, sanlar.length); System.out.println(Arrays.toString(sanlarCopy));
Arrays.copyOf() metodında original massivti hám nusqalanıwshı massiv uzınlıǵın kiritemiz. Biziń jaǵdayda sanlar.length massivti tolıǵı menen nusqalaydı.
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Arrays klası
Eger massiv basındaǵı sanawlı elementlerdi nusqalaw kerek bolsa:
int[] sanlar = {385,15,57,256,77,-37,14,91,-219,-7}; int[] sanlarCopy = Arrays.copyOf(sanlar, 5); System.out.println(Arrays.toString(sanlarCopy)); //[385, 15, 57, 256, 77]
Massivtiń bir bólegin nusqalaw kerek bolsa:
int[] sanlar = {385,15,57,256,77,-37,14,91,-219,-7}; int[] sanlarCopy = Arrays.copyOfRange(sanlar,3,7); System.out.println(Arrays.toString(sanlarCopy)); //[256, 77, -37, 14]
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Arrays klası
Eki massivti óz-ara salıstırıw kerek bolsa: int[] sanlar1 = {1, 2, 3}; int[] sanlar2 = {1, 2, 3};
System.out.println(Arrays.equals(sanlar1, sanlar2)); //true
Massivten kerekli elementti izlew
int binarySearch(massiv,basIndex,aqirIndex,element);
Eger bar bolsa, element indeksin, al joq bolsa -1 qaytaradı.
int[] mas = {12, 34, 56, -5, 7}; System.out.println(Arrays.binarySearch(mas,0,5,56)); // 2
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Mısallar
int[] massiv = {20, 10, 19, 8, 30};
System.out.println(massiv); //toString() metodısız juwapqa shıǵarıw System.out.println(Arrays.toString(massiv)); /*"durıs" juwapqa
shıǵarıw*/ Arrays.sort(massiv, 0, 5); //barlıq elementlerin sortirovka qılamız System.out.println(Arrays.toString(massiv));//nátiyjeni shıǵaramız int key = Arrays.binarySearch(massiv, 20); /*sortirovka qılınǵan
massivten 20 nı izleymiz*/ System.out.println(key);/*tawılǵan element indeksin juwapqa
shıǵaramız*/ System.out.println(Arrays.binarySearch(massiv, 0));//0 di izlew
run:
[I@106d69c
[20, 10, 19, 8, 30] [8, 10, 19, 20, 30] 3 -1
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>