0
|
983
|
787
|
714
|
1375
|
967
|
1087
|
Boston
|
983
|
0
|
214
|
1102
|
1763
|
1723
|
1842
|
New York
|
787
|
214
|
0
|
888
|
1549
|
1548
|
1627
|
Atlanta
|
714
|
1102
|
888
|
0
|
661
|
781
|
810
|
Miami
|
1375
|
1763
|
1549
|
661
|
0
|
1426
|
1187
|
Dallas
|
967
|
1723
|
1548
|
781
|
1426
|
0
|
239
|
Houston
|
1087
|
1842
|
1627
|
810
|
1187
|
239
|
0
|
double[][] distances = {
{0, 983, 787, 714, 1375, 967, 1087},
{983, 0, 214, 1102, 1763, 1723, 1842},
{787, 214, 0, 888, 1549, 1548, 1627},
{714, 1102, 888, 0, 661, 781, 810},
{1375, 1763, 1549, 661, 0, 1426, 1187},
{967, 1723, 1548, 781, 1426, 0, 239},
11.2 Ikki o'lchovli massivlar bilan ishlash asoslari
Ikki o'lchovli massivdagi elementga kirish satr va ustun indekslari orqali amalga oshiriladi. Ikki o'lchovli massivlar uchun o'zgaruvchini qanday e'lon qilishim mumkin? 2D massivini qanday yarataman? Ikki o'lchovli massivning elementlariga qanday kirish mumkin? Ushbu bo'lim ushbu masalalarni hal qiladi.
11.2.1 Ikki o'lchovli massiv o'zgaruvchilarni e'lon qilish va yaratish
2D massivlar
Ikki o'lchovli massivni e'lon qilish sintaksisi: elementType [] [] arrayRefVar;
Yoki elementType arrayRefVar [] []; // Ruxsat berilgan, lekin tavsiya etilmaydi
Misol tariqasida, ikki o'lchovli int qiymatlari massivining o'zgaruvchilari matritsasini qanday e'lon qilish mumkin: int [] [] matritsa; yoki int matritsasi [] [];
Siz 5 ga 5 ikki o'lchovli int qiymatlari massivini yaratishingiz va uni ushbu sintaksis yordamida matritsaga belgilashingiz mumkin: matritsa = new int [5] [5];
Ikki o'lchovli massiv ikkita pastki yozuvdan foydalanadi, biri satr uchun, ikkinchisi qator uchun. ustun. Bir o'lchovli massivda bo'lgani kabi, 11.1a-rasmda ko'rsatilganidek, har bir pastki indeks uchun int va 0 dan boshlanadi.
11.1-rasm Ikki o'lchovli massivning har bir subscriptining indeksi 0 dan boshlanadigan intdir.
11.1b-rasmda ko'rsatilganidek, 2-qator va 1-ustundagi ma'lum elementga 7 qiymatini belgilash uchun quyidagi sintaksisdan foydalanish mumkin: matritsa [2] [1] = 7;
Ikki o'lchovli to'plamni e'lon qilish, yaratish va ishga tushirish uchun massivni ishga tushirish vositasidan ham foydalanishingiz mumkin. Masalan, (a) dagi quyidagi kod 11.1c-rasmda ko'rsatilganidek, belgilangan boshlang'ich qiymatlarga ega massivni yaratadi. Bu (b) dagi kodga teng.
11.2.2 Ikki o'lchovli massivlarning uzunliklarini olish
Ikki o'lchovli massiv aslida har bir element bir o'lchovli bo'lgan massivdir. bir guruh. Massiv uzunligi x massivdagi x.length yordamida olinadigan elementlar sonidir. x [0], x [1] ,. ... ... va x [x.length-1] massivlardir. Ularning uzunligini x [0] .length, x [1] .length , yordamida olish mumkin. ... ... va x [x.length-1] .uzunlik.
Masalan, x = new int [3] [4], x [0], x [1] va x [2] bir oʻlchovli massivlar boʻlib, ularning har biri rasmda koʻrsatilganidek, toʻrtta elementni oʻz ichiga oladi. 8.2. x.uzunligi 3 va x [0] .uzunligi, x [1] .uzunligi va x [2] .uzunligi 4.
11.2-rasm Ikki o'lchovli massiv bir o'lchovli massiv bo'lib, unda har bir element
boshqa bir o'lchovli massiv.
11.2.3 Yirtilgan massivlar
Ikki o'lchovli massivdagi har bir satrning o'zi massivdir. Shunday qilib, iplar turli uzunliklarda bo'lishi mumkin. Bunday massiv yirtilgan massiv deb nomlanadi. Bu erda yirtiq massiv yaratish misoli keltirilgan:
Ko'rib turganingizdek, triangleArray [0] .length 5, TriangleArray [1] .length 4, triangleArray [2] .length 3, triangleArray [3] .length 2 va TriangleArray [4] .length 1 Agar siz yirtilgan massivdagi qiymatni oldindan bilmasangiz, lekin uning o‘lchamlarini bilsangiz – deylik, oldingidek – quyidagi sintaksis yordamida yirtilgan massiv yaratishingiz mumkin:
int[][] triangleArray = new int[5][];
triangleArray[0] = new int[5];
triangleArray[1] = new int[4];
triangleArray[2] = new int[3];
triangleArray[3] = new int[2];
triangleArray[4] = new int[1];
Endi siz massivga qiymatlarni belgilashingiz mumkin. Masalan,
triangleArray[0][3] = 50;
triangleArray[4][0] = 45;
11.3 Ikki o'lchovli massivlar bilan ishlash
Nested for looplar ko'pincha ikki o'lchovli massivlarni qayta ishlash uchun ishlatiladi. Aytaylik, massiv matritsasi shunday yaratilgan:
int [] [] матрица = новый int [10] [10];
Quyida ikki o'lchovli massivlarni qayta ishlashga misollar keltirilgan.
1. Kirish qiymatlari bilan massivlarni ishga tushirish. Keyingi tsikl ishga tushadi foydalanuvchi kiritish qiymatlari qatori:
java.util.Scanner input = new Scanner(System.in);
System.out.println("Enter " + matrix.length + " rows and " +
matrix[0].length + " columns: ");
for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
matrix[row][column] = input.nextInt();
}
}
Tasodifiy qiymatli massivlarni initsiallashtirish. Quyidagi tsikl 0 dan 99 gacha tasodifiy qiymatlar yordamida massivni ishga tushiradi:
for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
matrix[row][column] = (int)(Math.random() * 100);
}
}
Chop etilgan massivlar. Ikki oʻlchovli massivni chop etish uchun har bir elementni quyidagiga oʻxshash sikl yordamida massivga chop etishingiz kerak:
for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
System.out.print(matrix[row][column] + " ");
}
System.out.println();
}
4. Barcha elementlarning yig'indisi. Jami deb nomlangan o'zgaruvchidan foydalaning
miqdorini saqlash. Dastlab jami 0 ga teng. Massivning har bir elementini quyidagi tsikl yordamida jamiga qo'shing:
int total = 0;
for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
total += matrix[row][column];
}
}
Elementlarni ustun bo'yicha yig'ish. Har bir ustun uchun foydalaning
summasini saqlash uchun total deb nomlangan o'zgaruvchi. Ustundagi har bir elementni quyidagi tsikldan foydalanib yig'indiga qo'shing:
for (int column = 0; column < matrix[0].length; column++) {
int total = 0;
for (int row = 0; row < matrix.length; row++)
total += matrix[row][column];
System.out.println("Sum for column " + column + " is "
+ total);
}
6. Qaysi qatorda eng katta miqdor bor? maxRow va o'zgaruvchilardan foydalaning
indexOfMaxRow qatorning eng yuqori miqdori va indeksini kuzatish uchun. Har bir satr uchun uning summasini hisoblang va agar yangi summa kattaroq bo'lsa, maxRow va indexOfMaxRow ni yangilang.
int maxRow = 0;
int indexOfMaxRow = 0;
// Get sum of the first row in maxRow
for (int column = 0; column < matrix[0].length; column++) {
maxRow += matrix[0][column];
}
for (int row = 1; row < matrix.length; row++) {
int totalOfThisRow = 0;
for (int column = 0; column < matrix[row].length; column++)
totalOfThisRow += matrix[row][column];
if (totalOfThisRow > maxRow) {
maxRow = totalOfThisRow;
indexOfMaxRow = row;
}
}
System.out.println("Row " + indexOfMaxRow
+ " has the maximum sum of " + maxRow);
7. Tasodifiy aralashtirish. Bir o'lchovli elementlarni aralashtirish kiritilgan
massiv. Qo'shimcha ma'lumot uchun 9.2.6 bo'limiga qarang. 2D massivdagi barcha elementlarni qanday aralashtirish mumkin? Buning uchun [i] [j] elementlarning har bir matritsasi uchun tasodifiy ravishda i1 va j1 indekslarini hosil qiling va [i] [j] matritsasini [i1] [j1] matritsasi bilan quyidagi tarzda almashtiring:
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
int i1 = (int)(Math.random() * matrix.length);
int j1 = (int)(Math.random() * matrix[i].length);
// Swap matrix[i][j] with matrix[i1][j1]
int temp = matrix[i][j];
matrix[i][j] = matrix[i1][j1];
matrix[i1][j1] = temp;
}
}
Nazorat savollari:
1. Int qiymatlarining ikki o‘lchovli massivi uchun massiv mos yozuvlar o‘zgaruvchisini e’lon qiling, 4 ga 5 int matritsa yarating va uni o‘zgaruvchiga tayinlang.
2. Ikki o‘lchovli massivdagi satrlar turli uzunliklarga ega bo‘lishi mumkinmi?
Quyidagi kod nima beradi?
int [] [] массив = новый int [5] [6];
int [] x = {1, 2};
массив [0] = х;
System.out.println ("массив [0] [1] равно" + массив [0] [1]);
Quyidagi fikrlardan qaysi biri to‘g‘ri?
int [] [] r = новый int [2];
int [] x = новый int [];
int [] [] y = новый int [3] [];
int [] [] z = {{1, 2}};
int [] [] m = {{1, 2}, {2, 3}};
int [] [] п = {{1, 2}, {2, 3},};
Quyidagi kodning chiqishini ko'rsating:
int[][] array = {{1, 2}, {3, 4}, {5, 6}};
for (int i = array.length - 1; i >= 0; i——) {
for (int j = array[i].length - 1; j >= 0; j——)
System.out.print(array[i][j] + " ");
System.out.println();
}
Quyidagi kodning chiqishini ko'rsating:
int[][] array = {{1, 2}, {3, 4}, {5, 6}};
int sum = 0;
for (int i = 0; i < array.length; i++)
sum += array[i][0];
System.out.println(sum);
Do'stlaringiz bilan baham: |