در آرایههای چندبعدی، بیش از یک بُعد وجود دارد و هر سطر بهطور مستقل در حافظه پشته (Heap) ذخیره میشود. این ساختار به ما اجازه میدهد که اندازه هر سطر را بهصورت مجزا تعیین کنیم، که این ویژگی در مقایسه با آرایههای یکبعدی که ساختاری ثابت دارند، انعطافپذیری بیشتری ایجاد میکند.
مثال:
این برنامه جاوا نشان میدهد که چگونه میتوان یک آرایه چندبعدی ایجاد و استفاده کرد.
// Multi Dimensional Array
import java.io.*;
public class Geeks
{
public static void main(String[] args){
// Multidimensional array declaration
int[][] arr;
// Initializing the size of row and column respectively
arr = new int[1][3];
// Initializing the values
arr[0][0] = 3;
arr[0][1] = 5;
arr[0][2] = 7;
// Display the values using index
System.out.println("arr[0][0] = " + arr[0][0]);
System.out.println("arr[0][1] = " + arr[0][1]);
System.out.println("arr[0][2] = " + arr[0][2]);
}
}
خروجی:
arr[0][1] = 5
arr[0][2] = 7
سینتکس (نحو) آرایه چندبعدی در جاوا
• data_type: نوع دادهای که قرار است در آرایه ذخیره شود. به عنوان مثال: int، char و …
• dimension: بعد آرایهای که ایجاد میشود. برای مثال: 1D، 2D و …
• array_name: نام آرایه
• size1, size2, …, sizeN: اندازه هر بُعد به ترتیب.
مثالها:
int[][] arr2d = new int[3][5];
// Three dimensional array:
int[][][] arr3d = new int[3][5][7];
اندازه آرایههای چندبعدی:
اندازه یک آرایه چندبعدی را میتوان با ضرب اندازه تمام ابعاد آن محاسبه کرد. به عنوان مثال، اگر یک آرایه با ابعاد 3*5 تعریف شده باشد، اندازه آن به صورت زیر محاسبه میشود:3 * 5 = 15
بنابراین، این آرایه دارای ۱۵ خانه یا المان برای ذخیرهسازی دادهها خواهد بود.
آرایه دو بعدی (2D-Array)
آرایه دو بعدی سادهترین شکل آرایه چندبعدی است. میتوان آن را به عنوان مجموعهای از آرایههای یکبعدی در نظر گرفت که در قالب سطرها و ستونها سازماندهی شدهاند.سینتکس (اعلان، مقداردهی اولیه و انتساب):
data_type[][] array_name = new data_type[x][y];
// Assigning Value
array_name[row_index][column_index] = value;
نمایش آرایه دو بعدی به صورت جدول
آرایه دو بعدی را میتوان به شکل یک جدول با x سطر و y ستون در نظر گرفت.
• شماره سطرها از 0 تا (x-1) است.
• شماره ستونها از 0 تا (y-1) است.

به عنوان مثال، آرایه x با ۳ سطر و ۳ ستون به صورت زیر نمایش داده میشود:
مثال 1: افزودن مقادیر مستقیم به آرایه هنگام اعلان
در جاوا، میتوان در زمان اعلام آرایه دو بعدی، مقادیر را مستقیماً به آن اختصاص داد.
// Two Dimensional Array
import java.io.*;
class Main {
public static void main(String[] args){
// Array Intialised and Assigned
int[][] arr = { { 1, 2 }, { 3, 4 } };
// Printing the Array
for (int i = 0; i < 2; i++){
for (int j = 0; j < 2; j++)
System.out.print(arr[i][j]+" ");
System.out.println();
}
}
}
خروجی
3 4
مثال 2: بهروزرسانی مقادیر آرایه در حین اجرا
در جاوا، میتوان مقادیر آرایه دو بعدی را در زمان اجرا تغییر داد. این تغییرات میتوانند با دریافت ورودی از کاربر یا استفاده از متغیرها انجام شوند.
// Two Dimensional Array
public class Geeks
{
public static void main(String[] args) {
// Row and Columns in Array
int n = 2;
int m = 2;
// Array declared and initialized
int[][] arr = new int[n][m];
int it = 1;
// Assigning the values to array
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = it;
it++;
}
}
// Printing the Array
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
System.out.print(arr[i][j] + " ");
System.out.println();
}
}
}
3 4
دسترسی به عناصر آرایه دو بعدی
در آرایه دو بعدی:• i نشاندهنده شماره سطر است.
• j نشاندهنده شماره ستون است.
• میتوان به هر عنصر از آرایه با استفاده از arr[i][j] دسترسی پیدا کرد.
در اینجا، arr نام متغیری است که به آرایه دو بعدی اشاره میکند.
نکته:
در آرایهای با اندازه N، ایندکسها از 0 تا N-1 شمارهگذاری میشوند. بنابراین، سطر شماره 2 در واقع سطر سوم آرایه است.
مثال: دسترسی به عناصر آرایه دو بعدی با استفاده از ایندکسها
// Elements of Two-Dimensional Arrays
import java.io.*;
class Main {
public static void main(String[] args){
int[][] arr = { { 1, 2 },
{ 3, 4 } };
// Accessing Element at index
// row=1 and column=1
System.out.println("a[1][1] : " + arr[1][1]);
}
}
خروجی
آرایه دو بعدی با ورودی کاربر
برای ایجاد یک آرایه دو بعدی با ورودی کاربر، مراحل زیر را دنبال کنید:1. وارد کردن کلاس Scanner از پکیج util در ابتدای برنامه.
2. ایجاد یک شیء از کلاس Scanner.
3. درخواست از کاربر برای وارد کردن اندازه سطرها و ستونها.
4. استفاده از حلقه تو در تو برای دریافت ورودی و افزودن عناصر به آرایه.
5. چاپ آرایه دو بعدی و بستن شیء Scanner.
مثال: برنامه جاوا برای ایجاد آرایه دو بعدی با ورودی کاربر
// Dimensional array with user Inputs
import java.util.Scanner;
public class Geeks
{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
// Taking Number of Rows and Columns from User
System.out.print("Enter number of rows: ");
int row = sc.nextInt();
System.out.print("Enter number of columns: ");
int col = sc.nextInt();
int[][] arr= new int[row][col];
System.out.println("Enter elements of array: ");
// Taking input from user for each element of array
// using nested for loop
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
arr[i][j]= sc.nextInt();
}
}
System.out.println("Elements of array are: ");
// Printing Elements of Arrays
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
System.out.print(arr[i][j]+ " ");
}
System.out.println();
}
sc.close();
}
}

آرایه سهبعدی (3D-Array)
آرایه سهبعدی یک فرم پیچیده از آرایههای چندبعدی است. یک آرایه سهبعدی را میتوان بهعنوان یک آرایه از آرایههای دوبعدی در نظر گرفت تا درک آن آسانتر شود.نمایش آرایه سهبعدی در قالب جدولی
یک آرایه سهبعدی را میتوان بهعنوان یک جدول از آرایهها با ‘x’ سطر و ‘y’ ستون تصور کرد که در آن شماره سطرها از ۰ تا (x-1) و شماره ستونها از ۰ تا (y-1) متغیر است. یک آرایه سهبعدی با ۳ آرایه، هرکدام شامل ۳ سطر و ۳ ستون به شکل زیر است:
مثال 1: برنامه جاوا برای نمایش نحوه ایجاد و چاپ آرایه سهبعدی
// Three Dimensional Array
import java.io.*;
class Geeks
{
public static void main(String[] args){
// Array Created and Initialized
int[][][] arr = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };
// Defining the x,y,z in Multi
// Dimensional Array
int n = arr.length;
int m = arr[0].length;
int o = arr[0][0].length;
// Printing the Array
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
for (int k = 0; k < o; k++) {
System.out.println("arr[" + i + "][" + j + "][" + k + "] = " + arr[i][j][k]);
}
}
}
}
}
خروجی
arr[0][0][1] = 2
arr[0][1][0] = 3
arr[0][1][1] = 4
arr[1][0][0] = 5
arr[1][0][1] = 6
arr[1][1][0] = 7
arr[1][1][1] = 8
مثال 2: برنامه جاوا برای اختصاص مقادیر به آرایه سهبعدی با استفاده از ایندکسها
// Three Dimensional Array
import java.io.*;
class Main {
public static void main(String[] args){
int[][][] arr = new int[2][2][2];
// Three Dimensional x,y,z dimension
int n=arr.length;
int m=arr[0].length;
int o=arr[0][0].length;
int it=1;
// Assigning the values to array
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
for(int k=0; k < o; k++){
arr[i][j][k] = it;
it++;
}
}
}
// Printing the Array
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++){
for(int k=0; k < o; k++)
System.out.print(arr[i][j][k] + " ");
System.out.println();
}
System.out.println();
}
}
}
3 4
5 6
7 8
دسترسی به عناصر آرایههای سهبعدی
عناصر در آرایههای سهبعدی معمولاً با استفاده از x[i][j][k] فراخوانی میشوند که در آن ‘i’ شماره آرایه، ‘j’ شماره سطر و ‘k’ شماره ستون است.توجه: در آرایهها، اگر اندازه آرایه N باشد، ایندکسها از ۰ تا N-1 متغیر خواهند بود. بنابراین، برای ایندکس سطر ۲، شماره واقعی سطر ۲+۱ = ۳ خواهد بود.
مثال: دسترسی به عناصر آرایه سهبعدی با استفاده از ایندکسها.
// Three Dimensional Array by Index
import java.io.*;
class Geeks
{
public static void main(String[] args){
// Creating an Array
int[][][] arr = { { { 1, 2 }, { 3, 4 } },
{ { 5, 6 }, { 7, 8 } } };
// Printing array at index 0 , 0 , 0
System.out.println("arr[0][0][0] = " + arr[0][0][0]);
}
}
خروجی
وارد کردن آرایه چندبعدی در زمان اجرا
اکنون میتوانیم یک آرایه چندبعدی را در زمان اجرا وارد کنیم. در اینجا از کلاس Scanner استفاده میکنیم و سپس عناصر آرایه چندبعدی را از کاربر میگیریم و سپس تعداد عناصر زوج و فردی که کاربر به عنوان ورودی وارد کرده است را چاپ میکنیم.مثال: گرفتن ورودی از کاربر برای آرایه چندبعدی (در زمان اجرا) و چاپ تعداد اعداد زوج و فردی که کاربر وارد کرده است.
// Multi Dimensional Array
import java.io.*;
import java.util.Scanner;
class Geeks {
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
// Number of rows
int n = s.nextInt();
// Initialize a 2D array
int[][] arr = new int[n][];
int t = 0;
// Input for each row
for (int i = 0; i < n; i++) {
int m = s.nextInt();
// Assuming all rows have the same column count
t = m;
arr[i] = new int[m];
for (int j = 0; j < m; j++) {
arr[i][j] = s.nextInt();
}
}
int odd = 0, even = 0;
System.out.println("Rows " + n + " with " + t
+ " Columns");
System.out.println("Elements of Array:");
// Print the entire array and count even/odd numbers
for (int i = 0; i < n; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
// Count even and odd numbers
if (arr[i][j] % 2 == 0) {
even++;
}
else {
odd++;
}
}
System.out.println();
}
// Print the aggregated results
System.out.println("Even: " + even
+ ", Odd: " + odd);
s.close();
}
}
خروجی

کاربرد آرایههای چندبعدی
آرایههای چندبعدی برای سازماندهی دادهها بهصورت منظمتر (در قالب جدولی) استفاده میشوند. بهعنوان مثال، میتوان دادههای مربوط به یک دانشآموز مانند شماره رول و نمرات را مرتب کرد یا نمای تصویری را در یک ماتریس سهبعدی نمایش داد.در مسائل برنامهنویسی دینامیک، از آرایههای چندبعدی استفاده میشود که برای نمایش وضعیتهای مختلف مشکل بهکار میروند.
علاوه بر این، آرایههای چندبعدی در بسیاری از مسائل الگوریتمی استاندارد مانند موارد زیر کاربرد دارند:
• ضرب ماتریسها
• نمایش ماتریس مجاورت در گرافها
• مسائل جستجوی شبکه (Grid search)
ورود و ثبت نام برای ارسال نظر وارد شوید