الکتروهایو

هوش مصنوعی / الکترونیک / برنامه‌نویسی

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

آرایه چیست؟

آرایه چیست؟
در این مقاله می‌خوانید:

زمان تخمینی مطالعه: 6 دقیقه

آرایه مجموعه‌ای از آیتم‌ها هم نوع است که در مکان‌های حافظه به هم پیوسته ذخیره می‌شوند. این نوع داده یکی از محبوب‌ترین و ساده‌ترین ساختارهای داده است و اغلب برای پیاده سازی سایر ساختارهای داده استفاده می‌شود. هر آیتم در یک آرایه در شروع با 0 ایندکس می‌شود(در برخی زبان‌های برنامه نویسی با 1 شروع می‌شود.)

اصطلاحات پایه آرایه

  • شاخص آرایه: در یک آرایه، عناصر با شاخص هایشان مشخص می‌شوند. شاخص آرایه‌ها از 0 شروع می‌شود.
  • عنصر آرایه: عناصر آیتم‌هایی هستند که در یک آرایه ذخیره می‌شوند و با فهرست آنها می‌توان به آنها دسترسی داشت.
  • طول آرایه: طول یک آرایه با تعداد عناصری که می‌تواند داشته باشد تعیین می‌شود.

نمایش آرایه

نمایش یک آرایه را می‌توان با اعلان آن تعریف کرد. اعلان به معنای تخصیص حافظه برای آرایه‌ای با اندازه معین است.

آرایه‌ها را می‌توان به روش‌های مختلف در زبان‌های مختلف تعریف کرد. برای توضیح بهتر، در زیر برخی از تعریف‌های آرایه خاص زبان آورده شده است.

زبان ++C
int arr[5]; // This array will store integer type element
char arr[10]; // This array will store char type element
float arr[20]; // This array will store float type element
زبان C
int arr[5]; // This array will store integer type element
char arr[10]; // This array will store char type element
float arr[20]; // This array will store float type element
زبان جاوا
/* Static Arrays are arrays that are declared before runtime
and are assigned values while writing the code.
*/
// The syntax of declaring a static array is:
[]
= {, ,….. };
// Example:
int arr[] = { 2, 5, 6, 9, 7, 4, 3 };
زبان پایتون
arr = [10, 20, 30] # This array will store integer
arr2 = ['c', 'd', 'e'] # This array will store characters
arr3 = [28.5, 36.5, 40.2] # This array will store floating element
زبان #C
int[] arr = new int[5]; // This array will store integer type element
زبان جاوا اسکریپت
// JS code
let arr=[10,20,30]; // This array will store integer
let arr2 = ['c', 'd', 'e'] // This array will store characters
let arr3 = [28.5, 36.5, 40.2] // This array will store floating elements

روش‌های اعلان فوق تخصیص حافظه استاتیک یا کامپایل است ، به این معنی که هنگام تهیه یک برنامه، حافظه عنصر آرایه اختصاص می‌یابد. در اینجا فقط یک اندازه ثابت (به عنوان مثال اندازه‌ای که در داخل براکت‌ها ذکر شده است) حافظه برای ذخیره سازی اختصاص می‌یابد. اگر در تعریف آرایه‌ها اندازه بزرگتر را اعلام کنیم و تعداد کمتری از عناصر را ذخیره کنیم، منجر به هدر رفتن حافظه می‌شود یا در مواردی که اندازه کمتری را اعلام می‌کنیم، حافظه کافی برای ذخیره بقیه عناصر را نخواهیم داشت. در چنین مواردی، تخصیص حافظه ثابت ترجیح داده نمی‌شود.

آیا امکان ایجاد آرایه پویا وجود دارد؟

پاسخ به این سوال بله است. امکان تخصیص حافظه به صورت پویا وجود دارد. بنابراین، تخصیص حافظه پویا فرآیند تخصیص فضای حافظه در طول زمان اجرا یا زمان اجرا است. این امکان در زبان‌های زیر پشتیبانی می‌شود:

زبان ++C
int *array = new int[5];
زبان جاوا
int arr[10]; // Store integer elements
String arr[5]; // Store String type of elements
زبان پایتون ورژن 3:
# list of integers
my_list = [1, 2, 3, 4]
#Empty list
my_list = []
#list of mixed data types
my_list = ["Hello", 1, 5.5]
زبان #C
int[] numArray = new int[] {};

زبان جاوا اسکریپت
// JavaScript has dynamic arrays: their size is not predetermined, nor the type of data.

// Create array using literal
var x = ["a", "b", "c"]; 

// Create array using constructor
var x = new Array();	 

// Create array using constructor with items
var y = new Array("a", "b", "c");

زبان PHP
$arr = array("a","b","c");

چرا ساختارهای داده آرایه مورد نیاز است؟

فرض کنید کلاسی متشکل از 5 دانش آموز وجود دارد و باید نمرات آنها را در امتحان ثبت کنیم، می‌توانیم این کار را با تعریف مجزای پنج متغیر و پیگیری سوابق انجام دهیم، اما اگر تعداد دانش آموزان بسیار زیاد شود، چه می‌شود. برای دستکاری و حفظ داده‌ها بسیار چالش برانگیز است. معنی آن این است که ما می‌توانیم از متغیرهای عادی (v1، v2، v3، ..) زمانی که تعداد اشیاء کمی داریم استفاده کنیم. اما اگر بخواهیم تعداد زیادی نمونه را ذخیره کنیم، مدیریت آنها با متغیرهای عادی مشکل می‌شود. ایده آرایه‌ها این است که نمونه‌های زیادی را در یک متغیر ادغام کنیم.

انواع آرایه‎‌ها

آرایه‌ها به طور کلی به سه دسته تک بعدی، دو بعدی و سه بعدی تقسیم می‌شود. آرایه تک بعدی در واقع ردیفی از داده‌های پست سر هم است. آرایه‌های دو بعدی در واقع آرایه‌ای از آرایه‌ها یا به عبارتی یک ماتریس شامل ردیف و ستون است. آرایه‌های سه بعدی شکل پیچیده‌تری بوده و در واقع آرایه‌ای از آرایه‌های دو بعدی است.

انواع عملیات آرایه‌ها

  • پیمایش: در عناصر یک آرایه پیمایش کنید.
  • درج: درج یک عنصر جدید در یک آرایه.
  • حذف: حذف عنصر از آرایه‌ها.
  • جستجو: جستجوی یک عنصر در آرایه‌ها.
  • مرتب سازی: حفظ ترتیب عناصر در آرایه‌ها.

مزایای استفاده از آرایه‌ها

  • آرایه‌ها اجازه دسترسی تصادفی به عناصر را می‌دهند. این امر باعث می‌شود دسترسی به عناصر بر اساس موقعیت سریعتر شود.
  • آرایه‌ها کش لوکالیتی بهتری دارند که تفاوت بسیار زیادی در عملکرد ایجاد می‌کند.
  • آرایه‌ها آیتم‌های داده چندین‌گانه از یک نوع را با استفاده از یک نام واحد نشان می‌دهند.
  • آرایه‌ها داده‌های متعددی از انواع مشابه را با نام یکسان ذخیره می کنند.
  • از ساختارهای داده آرایه‌ای برای پیاده سازی سایر ساختارهای داده مانند لیست‌های پیوندی، پشته‌ها، صف‌ها، درختان، گراف‌ها و غیره استفاده می‌شود.

معایب استفاده از آرایه‌ها

  • از آنجایی که آرایه‌ها اندازه ثابتی دارند، پس از تخصیص حافظه به آنها، نمی‌توان آن را کم یا زیاد کرد و در صورت لزوم ذخیره داده‌های اضافی غیرممکن می‌شود. آرایه‌ای با اندازه ثابت آرایه ایستا نامیده می‌شود.
  • تخصیص حافظه کمتر از مقدار مورد نیاز به یک آرایه منجر به از دست رفتن داده‌ها می‌شود.
  • یک آرایه در ذات همگن است، بنابراین، یک آرایه واحد نمی‌تواند مقادیر انواع داده‌های مختلف را ذخیره کند.
  • آرایه‌ها داده‌ها را در مکان‌های حافظه پیوسته ذخیره می‌کنند که اجرای حذف و درج را بسیار دشوار می‌کند. این مشکل با پیاده سازی لیست‌های پیوندی برطرف می‌شود که امکان دسترسی متوالی به عناصر را فراهم می‌کند.

کاربرد آرایه‌ها

  • در پیاده سازی سایر ساختارهای داده مانند لیست‌های آرایه‌ها، پشته‌ها، جداول درهم سازی(Hash table)، بردارها و ماتریس‌ها استفاده می‌شوند.
  • رکوردهای پایگاه داده معمولاً به صورت آرایه‌ها پیاده سازی می‌شوند.
  • در جداول جستجو توسط کامپیوتر استفاده می‌شود.
  • برای الگوریتم‌های مرتب‌سازی مختلف مانند مرتب‌سازی درج حبابی، مرتب‌سازی ادغام و مرتب‌سازی سریع استفاده می‌شود.
لوگو الکتروهایو

الکتروهایو در خدمت مخاطبان عزیز می‌باشد. ما در تیم الکتروهایو در تلاش برای تهیه مقالات و مطالب به روز هستیم. لطفا برای مطالب و مقالات بیشتر با ما همراه باشید.

مطالب مرتبط:

داده‌های اسمی Nominal Data - الکتروهایو

داده‌های اسمی Nominal Data چیست؟

داده‌های اسمی(Nominal Data) یکی از اساسی‌ترین انواع داده‌ها در تجزیه و تحلیل داده‌ها است. شناسایی و تفسیر آن در بسیاری از زمینه‌ها از جمله آمار، علوم کامپیوتر، روانشناسی و بازاریابی ضروری است. این مقاله ویژگی‌ها، کاربردها و تفاوت‌های داده‌های اسمی

ادامه مطلب »
مقدمه‌ای بر ژوپیتر نوت‌بوک Jupiter Notebook - سایت الکتروهایو

مقدمه‌ای بر ژوپیتر نوت‌بوک Jupiter Notebook برای یادگیری ماشین

ژوپیتر نوت‌بوک(Jupyter Notebook) یک پلتفرم وب منبع باز است که به توسعه دهندگان اجازه می‌دهد اسنادی را ایجاد و به اشتراک بگذارند که شامل متن روایت، کد زنده، تجسم‌ها و معادلات است. این پلتفرم مبتنی بر تجسم داده‌ها، تمیز کردن

ادامه مطلب »
تفاوت تصویر، عکس و نگاره چیست؟ - سایت الکتروهایو

تفاوت تصویر، عکس و نگاره چیست؟

امروزه، اکثر مردم هنگام بحث در مورد نمایش بصری یک شی در رایانه، تفاوت تصویر، عکس و نگاره را نمی‌دانند و آنها را مترادف هم در نظر می‌گیرند. اما برای ابهام هر یک از این موارد را به صورت زیر

ادامه مطلب »
خزنده وب Web Crawler چیست؟ - سایت الکتروهایو

خزنده وب Web Crawler چیست؟

تعریف خزنده وب خزنده وب یک ربات موتور جستجوی دیجیتال است که از کپی و ابرداده(Metadata) برای کشف و فهرست‌بندی صفحات سایت استفاده می‌کند. این مفهوم همچنین به عنوان ربات عنکبوتی(اسپایدر) نیز نامیده می‌شود، وب کراولرها در وب جهانی (از

ادامه مطلب »
مفهوم SIEM (مدیریت رویداد و امنیت اطلاعات) چیست؟

مفهوم SIEM (مدیریت رویداد و امنیت اطلاعات) چیست؟

SIEM یا مدیریت رویدادها و امنیت اطلاعات، گزارش‌ها و رویدادها را جمع‌آوری کرده و این داده‌ها را برای تجزیه و تحلیل بیشتر نرمال می‌کند که می‌توان از آنها به صورت تجسم، هشدار، جستجو، گزارش و موارد دیگر استفاده کرد. تیم‌های

ادامه مطلب »
داده‌های اسمی Nominal Data - الکتروهایو

داده‌های اسمی Nominal Data چیست؟

داده‌های اسمی(Nominal Data) یکی از اساسی‌ترین انواع داده‌ها در تجزیه و تحلیل داده‌ها است. شناسایی ...

حاشیه‌نویسی متن در هوش مصنوعی - سایت الکتروهایو

حاشیه‌نویسی متن در هوش مصنوعی

حاشیه‌نویسی داده به الگوریتم‌های یادگیری ماشین اجازه می‌دهد تا اطلاعات را درک و تفسیر کنند. ...

هوش مصنوعی در باستان شناسی و کاربردهای آن - سایت الکتروهایو

هوش مصنوعی در باستان شناسی چه کاربردهای می‌تواند داشته باشد؟

مکان‌های باستان‌شناسی ممکن است ثابت باشند، اما فرهنگ‌هایی که آنها را تولید کرده‌اند، پویا و ...

با الگوریتم تشخیص اشیاء FCOS آشنا شوید - سایت الکتروهایو

با الگوریتم تشخیص اشیاء FCOS آشنا شوید: تشخیص اشیاء تک مرحله‌ای کاملاً کانولوشنال

تشخیص اشیاء یک کار مهم در بینایی کامپیوتر است که با رسم کادرهای محدود کننده ...

تصویربرداری چند طیفی، دیدی جدید فراسوی نور مرئی - سایت الکتروهایو

تصویربرداری چند طیفی، دیدی جدید فراسوی نور مرئی

تصویربرداری چند طیفی تکنیکی است که نور را در طیف وسیعی از باندهای طیفی، فراتر ...