یکی از ساختمان دادهآموزش ساختمان داده و الگوریتمهر ساختمان داده یک نوع فرمت ذخیرهسازی و مدیریت دادهها در کامپیوتر است، که امکان دسترسی و اصلاح کارآمد آن دادهها را برای یکسری از الگوریتمها و کاربردها فراهم میکند، در این صفحه به بررسی و آموزش ساختمان داده و الگوریتم پرداخته شده است های مهم که تقریباً در تمامی زبانهای برنامه نویسی مورداستفاده قرار میگیرد، آرایه ها هستند. آرایهآموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100در این مقاله موارد زیر بررسی شده است : 1- آرایه چیست 2- انواع اندیس گذاری در آرایه 3- انواع آرایه 4- محاسبه آدرس در آرایه 5- محاسبه شماره در آرایه 6- آرایه در برنامه نویسی 7- مزایای استفاده از آرایه ها، در واقع لیستی متشکل از چندین متغیر هستند که درون یک ساختار منظم ذخیره شدهاند. معمولاً آرایه ها متغیرهایی از نوع یکسان دارند، اما در بعضی از زبانهای تحت مفسر (Interpreter) همانند زبان پایتونزبان برنامه نویسی پایتون چیست؟ – نحوه شروع و دلایل محبوبیتزبان برنامه نویسی پایتون (Python) چیست؟ این مقاله عالی به بررسی دلایل محبوبیت پایتون، موارد استفاده از پایتون و نحوه شروع به برنامه نویسی پایتون پرداخته، هر نوع دادهای را میتوان درون یک آرایه ذخیره کرد. فرض کنید یک متغیر با نام sale دارید و مقدار فروش یک محصول در طول یک روز را در آن ذخیره کردهاید. اگر بخواهید فرضاً مقدار فروش در طول یک هفته را ذخیره کنید به جای استفاده از یک متغیر متغیر در برنامه نویسی چیست ⚡️انواع متغیر در برنامه نویسیاین صفحه عالی بررسی کرده متغیر در برنامه نویسی چیست و انواع متغیر در برنامه نویسی را معرفی و مراحل کار با متغیر، نحوه تعریف و قوانین نامگذاری متغیرها را گفته باید از یک آرایه با 7 عنصر استفاده کنید که هر اندیس آن برابر مقدار فروش محصول در یکی از روزهای هفته است؛ نام این آرایه را میتوانیم sales بگذاریم:
ساختار یک آرایه
ساختار کلی یک آرایه بهصورت شکل زیر است.
اصطلاحات مهم مربوط به آرایهها در لیست زیر آمده است:
- اندازه آرایه (Length): به تعداد خانههای هر آرایه، طول یا اندازه آن آرایه گفته میشود.
- اندیس آرایه (Index): به هر خانه آرایه یک اندیس میگویند؛ در واقع اندیس نقش آدرس یا اشاره گراشاره گر چیست — اشاره گرها در برنامه نویسیاین صفحه عالی توضیح داده اشاره گر چیست و نحوه تعریف اشاره گرها و همین طور اشاره گرها در برنامه نویسی را بررسی کرده سپس انواع اشاره گرها و کاربرد اشاره گرها را گفته متغیرهای ذخیره شده در آرایه را دارد؛ بنابراین وقتی میخواهیم از یک مقدار مشخصی از درون آرایه استفاده کنیم، بهوسیله اندیس آن خانه این کار را انجام میدهیم.
- بعد آرایه (Dimension): هر آرایه دارای بعد است، بهعنوانمثال آرایه بالا دارای تنها یک بعد است. آرایه ها میتوانند 2 بعدی همانند یک ماتریسماتریس در ساختمان داده⚡️معرفی انواع ماتریس (خلوت،قطری)این مقاله عالی گفته ماتریس چیست و به آموزش ماتریس پرداخته، همچنین انواع ماتریس از جمله ماتریس خلوت، ماترس قطری و ماتریس های بالا و پایین مثلثی را معرفی کرده و یا چندبعدی باشند.
ابعاد آرایه در زبان های برنامه نویسی
همانطور که گفته شد آرایه ها در زبان های برنامه نویسی میتوانند از 1 بعد شروع شوند تا به بالا؛ اما آرایه های تکبعدی و دوبعدی بیشترین کاربرد را دارند. از آرایه های تکبعدی برای ایجاد لیست استفاده میشود؛ بهعنوانمثال لیست نمرات دانشآموزان، لیست قیمتها، از آرایه های دوبعدی نیز برای تعریف ماتریسها استفاده میشود. در تعریف آرایه در زبان های برنامه نویسی باید بهخاطر داشته باشید که واژه مورداستفاده برای هر بعد چیست؟ بهعنوانمثال در آرایه های تکبعدی، بهاندازه آرایه Size میگویند. در آرایه های 2 بعدی، بهاندازه افقی، سطر یا Row و بهاندازه عمودی، ستون یا Column میگویند. در آرایه 3 بعدی به سطر و ستون یک عمق یا Depth هم اضافه میشود که نمایانگر اندازه آرایه در جهت z (داخل) است. خلاصه این مطالب را در تصویر زیر مشاهده میکنید:
در تصویر زیر تعریف یک آرایه تکبعدی با سایز 5، یک آرایه دوبعدی با 3 سطر و 4 ستون و در نهایت یک آرایه سهبعدی با عمق 2 به همراه 3 سطر و 4 ستون را مشاهده میکنید.
در ادامه میخواهیم این آرایه را در زبان های مختلف برنامه نویسی تعریف کنیم.
تعریف آرایه در زبان های برنامه نویسی
رویکرد تعریف آرایه در زبان های برنامه نویسی با یکدیگر متفاوت است؛ بهعنوانمثال تعریف آرایه در زبان C++برنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده و زبان C#سی شارپ چیست ⚡️سی شارپ به زبان سادهاین صفحه عالی بررسی کرده که سی شارپ چیست و تاریخچه سی شارپ، محیط و ابزارهای سی شارپ، ویژگی های سی شارپ، مزایای سی شارپ و کاربرد و بازار کار سی شارپ را گفته با تعریف آرایه در زبان پایتون کاملاً متفاوت است؛ چراکه زبانهایی مانند C++ تحت کامپایلر (Compiler)کامپایلر چیست و چگونه کار میکند و چرا از آن استفاده میشود؟کامپایلر (Compiler) یک برنامهی خاص برای ترجمه سورس کدهای (Source Code) یک زبان برنامه نویسی، به زبان ماشین یا بایت کد و یا یک زبان برنامه نویسی دیگر است هستند و نوع آن در زمان کامپایل مشخص میشود؛ اما در زبانهایی مانند پایتون که یکزبان تحت مفسر است، نوع آرایه و متغیرهای درون آن در زمان اجرا (Runtime) و موقع استفاده از آنها مشخص میشود. در این قسمت تعریف آرایه 1، 2 و 3 بعدی را در زبانهای مختلف برنامه نویسی آوردهایم تا با نحوه تعریف آرایه در زبانهای برنامه نویسی آشنا شوید:
زبان C و C++
در زبان برنامه نویسی سی پلاس پلاس و زبان Cزبان برنامه نویسی C – مزایا و کاربرد زبان C – فرق C و ++Cاین مقاله عالی ابتدا توضیح میدهد که زبان برنامه نویسی c چیست، سپس به بررسی مزایا و معایب زبان C ، کاربردهای زبان سی ، و تفاوت بین C و ++C میپردازد، تعریف آرایه ها همانند ساختار زیر است:
آرایه تک بعدی <data_type> <array_name>[<size>];
آرایه دو بعدی <data_type> <array_name>[<rows>][<columns>];
آرایه سه بعدی <data_type> <array_name>[<depth>][<rows>][<columns>];
در کد زیر 3 آرایه در زبان C++ و C تعریف شده است:
int myArray[5];
int twoDArray[3][4];
int threeDArray[2][3][4];
زبان C#
ساختار تعریف آرایه در زبان سیشارپ بهصورت زیر است:
آرایه تک بعدی<data_type>[] <array_name> = new <data_type>[<size>];
آرایه دو بعدی<data_type>[,] <array_name> = new <data_type>[<rows>, <columns>];
آرایه سه بعدی<data_type>[,,] <array_name> = new <data_type>[<depth>, <rows>, <columns>];
در کد زیر 3 آرایه در زبان C# تعریف شده است:
int[] myArray = new int[5];
int[,] twoDArray = new int[3, 4];
int[,,] threeDArray = new int[2, 3, 4];
زبان جاوا
ساختار تعریف آرایه در زبان برنامهنویسی جاواجاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا یک زبان برنامه نویسی همه منظوره، مبتنی بر کلاس و شی گرا است که برای داشتن وابستگی های پیاده سازی کمتر طراحی شده است، زبان برنامه نویسی جاوا شبیه ++C است بهصورت زیر است:
آرایه تک بعدی <data_type>[] <array_name> = new <data_type>[<size>];
آرایه دو بعدی <data_type>[][] <array_name> = new <data_type>[<rows>][<columns>];
آرایه سه بعدی <data_type>[][][] <array_name> = new <data_type>[<depth>][<rows>][<columns>];
در کد زیر 3 آرایه در زبان جاوا تعریف شده است:
int[] myArray = new int[5];
int[][] twoDArray = new int[3][4];
int[][][] threeDArray = new int[2][3][4];
زبان پایتون
در زبان برنامه نویسی پایتون، تعریف آرایه بهطورکلی با زبانهایی که بالاتر ذکر شدهاند فرق میکند. اولین نکته واژه آرایه است؛ در زبان پایتون به جای واژه آرایه از واژه لیست (list) استفاده میشود. در زبانهای بالا، در واقع زبانهای کامپایلری هستند، نیاز به تعیین نوع و تعیین اندازه آرایه بود؛ اما در زبان پایتون نیازی به مشخصکردن سایز آرایه و نوع ذخیرهسازی آن نداریم؛ در واقع اندازه آرایه در زبان پایتون بهصورت پویا با اضافهکردن متغیرهای جدید به آن تغییر میکند؛ همچنین در یک آرایه میتوان هر نوع مقداری را ذخیره کرد؛ بهعنوانمثال اندیس 0 میتواند متغیر از نوع عدد صحیح باشد و اندیس 1 از نوع رشتهرشته یا String چیست ⚡️ نحوه کار با استرینگ در برنامه نویسیاین مقاله به معرفی رشته (String) یا استرینگ در برنامه نویسی، رشته در پایتون، رشته در C++ و همین طور الگوریتمهای معروف مربوط به رشته ها در برنامه نویسی پرداخته (String) و مثلاً اندیس 2 میتواند از جنس یک آبجکت از کلاس ساخته شده توسط برنامه نویس باشد.
برای تعریف آرایه در زبان پایتون از ساختار زیر پیروی میکنیم:
آرایه تک بعدی <list_name> = [<element1>, <element2>, ..., <elementN>]
آرایه دو بعدی <list_name> = [[<element11>, <element12>, ..., <element1N>],
[<element21>, <element22>, ..., <element2N>],
...
[<elementM1>, <elementM2>, ..., <elementMN>]]
آرایه سه بعدی <list_name> = [[[<element111>, <element112>, ..., <element11N>],
[<element121>, <element122>, ..., <element12N>],
...
[<element1P1>, <element1P2>, ..., <element1PN>]],
...
[[<elementM11>, <elementM12>, ..., <elementM1N>],
[<elementM21>, <elementM22>, ..., <elementM2N>],
...
[<elementMP1>, <elementMP2>, ..., <elementMPN>]]]
همانطور که مشاهده میکنید تعریف لیست یا آرایه در زبان پایتون بسیار ساده است و تنها نیاز است تعداد [ ]ها برای هر بعد تغییر کند. در کد زیر 3 آرایه در زبان پایتون تعریف شده است:
my_list = [1, 2, 3, 4, 5]
twoDList = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]
threeDList = [[[1, 2, 3],
[4, 5, 6]],
[[7, 8, 9],
[10, 11, 12]]]
زبان R
زبان برنامه نویسی Rزبان برنامه نویسی R چیست؟ کاربرد زبان برنامه نویسی r چیست؟این مقاله عالی به توضیح زبان برنامه نویسی R (آر) پرداخته، همچنین به بررسی محیط نرم افزاری زبان R، مزایا و معایب زبان R و کاربردهای زبان R پرداخته است یکی از زبانهایی است که برای مسائل آماری و تحلیل دادهها بسیار مورداستفاده محققین و دانشجویان واقع میشود. آرایه یکی از مباحث مهم در این زبان است که با نامهای Vector (برای آرایه تکبعدی) و Matrix یا ماتریس برای آرایه های دو و چندبعدی شناخته میشوند. در کد زیر 3 آرایه به زبان آر نوشته شده است:
my_vector <- c(1, 2, 3, 4, 5)
twoDMatrix <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), nrow=3, ncol=4)
threeDArray <- array(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), dim=c(2, 3, 4))
آموزش درس ساختمان داده
قبل از مطالعه ادامه مقاله لازم به ذکر است که برای مشاهده و آموزش سایر مباحث مربوط به درس ساختمان داده و الگوریتم میتوانید از فیلمهای زیر استفاده کنید
فیلم ساختمان داده جلسه 1
فیلم ساختمان داده جلسه 1
فیلم ساختمان داده جلسه 2
فیلم ساختمان داده جلسه 3
فیلم ساختمان داده جلسه 4
فیلم ساختمان داده جلسه 5
فیلم ساختمان داده جلسه 6
فیلم ساختمان داده جلسه 7
فیلم ساختمان داده جلسه 8
حل تست ساختمان و الگوریتم جلسه 1
حل تست ساختمان و الگوریتم جلسه 2
حل تست ساختمان و الگوریتم جلسه 3
حل تست ساختمان و الگوریتم جلسه 4
انواع پیمایشهای درخت
نحوه ساخت درخت BST
آموزش درخت B-Tree
بررسی مرتبه ساخت هیپ
آموزش مرتب سازی سریع
آموزش شبکه شار
حل سوالات ساختمان ارشد کامپیوتر 99
حل ساختمان ارشد 95 بخش 1
حل ساختمان ارشد 95 بخش 2
دسترسی و استفاده از آرایه در برنامه نویسی
دسترسی به متغیرهای ذخیره شده درون خانههای آرایه از طریق اندیسهای آرایه ممکن میشود. رویکرد اندیس در زبانهای برنامه نویسی مختلف، متفاوت است؛ بهعنوانمثال اکثر زبانهایی که امروزه مورداستفاده قرار میگیرند مانند C++، Java، Python و... اندیس اولین خانه آرایه برابر 0 است؛ بنابراین اندیسهای یک آرایه با اندازه 7 از 0 شروع میشود تا 6. یعنی اندیس اولین خانه 0 و اندیس آخرین خانه برابر 6 است؛ اما دسته دیگری از زبانهای برنامه نویسی هستند که اندیس آرایه ها در آن زبان از صفر شروع نمیشود؛ بهعنوانمثال اندیس آرایه در زبانهایی مثل فرترن (Fortran)، متلب (Matlab) و زبان R از 1 شروع میشود. در کد جاوای زیر یک آرایه به نام sales از نوع عدد صحیح (Int) با اندازه 5 ایجاد شده است، سپس در خط 4 یک متغیر با نام sale ایجاد کردیم و مقدار آن را برابر با اندیس دوم آرایه sales قرار دادیم؛ باتوجه به اینکه اندیس از صفر شروع میشود، بنابراین متغیر sale برابر مقدار اندیس دوم؛ یعنی خانه سوم که برابر 30 است میشود.
public class Main {
public static void main(String[] args) {
int[] sales = {10, 20, 30, 40, 50}; // Initializing the array in one line
int sale = sales[2];
System.out.println("Value at index 2: " + sale);
}
}
بازنویسی کد بالا در زبان پایتون بهصورت زیر است:
sales = [10, 20, 30, 40, 50] # Initializing the list in one line
sale = sales[2]
print("Value at index 2:", sale)
اکنون اگر هرکدام از دو برنامه بالا را اجرا کنیم نتیجه بهصورت زیر در خروجی چاپ میشود:
Value at index 2: 30
مزایا و معایب آرایه ها
آرایه ها دارای مزایا و معایبی هستند که در اینجا به مهمترین آنها اشاره میکنیم:
مزایا
- دسترسی سریع: با استفاده از اندیس آرایه ها میتوان به هر خانه از آرایه در زمان ثابتی دسترسی پیدا کرد؛ بنابراین اندازه آرایه تأثیری در سرعت دسترسی به المانهای آن نخواهد گذاشت.
- حافظه پیوسته: المان های آرایه درون حافظه بهصورت پیوسته و پشتسرهم ذخیره میشوند؛ به همین علت پرفورمنس در بسیاری از مواقع به دلیل توانایی استفاده از حافظه کش (Cache) افزایش مییابد.
- سادهبودن: آرایه، ساختمان داده بسیار ساده و سر راستی بوده که بسیار قابلفهم و پرکاربرد است.
- پیمایش آسان: آرایه ها با یک حلقه ساده مثل forحلقه for در زبان برنامه نویسیاین مقاله عالی حلقه for در زبان های برنامه نویسی را معرفی و گفته حلقه For چگونه کار میکند و مثال هایی از حلقه For در زبان های محبوب را آورده است بهراحتی پیموده (Iterate) میشوند که برای پرفورمنس برنامهها مزیت مهمی محسوب میشود.
معایب
- اندازه ثابت: در بسیاری از زبانهای برنامه نویسی، اندازه آرایه ها ثابت است و در زمان تعریف مشخص میشود؛ بنابراین بهراحتی نمیتوان این مقدار را تغییر داد و نیاز به انجام فرایندهای پرهزینهای است.
- هدردادن حافظه: با تعریفکردن آرایه، خانههای حافظه به اندازه آرایه رزرو میشود؛ بنابراین اگر آرایهای پر نشود، در واقع حافظه را هدر داده است؛ چون قسمتهای رزرو شده دیگر نمیتوانند مقادیر دیگری را در خود ذخیره کنند.
- خطای IndexOutOfBoundsErrors: یکی از خطاهای بسیار آزاردهنده در برنامه نویسی، خطای IndexOutOfBoundsExceptions است و زمانی رخ میدهد که به یک اندیس غیرمعتبر بخواهیم دسترسی پیدا کنیم؛ مثلاً اگر اندازه آرایه 5 باشد، بزرگترین اندیسش 4 است، حال اگر ما به هر نحوی تلاش کنیم به اندیس 12 دسترسی پیدا کنیم (بهعنوانمثال در زبان جاوا) این استثنا رخ میدهد.
کاربرد آرایه ها در برنامه نویسی
آرایه کاربردهای فراوانی در برنامه نویسی دارد. در لیست زیر برخی از مهمترین آنها را ذکر کردهایم:
- برای ایجاد ساختمان دادههای دیگری مانند پشتهساختمان داده پشته ⚡️ پشته چیست؟ کاربرد پشته در ساختمان دادهاین مقاله عالی توضیح داده که پشته چیست و کاربرد پشته در ساختمان داده چیست، همچنین نحوه کارکرد پشته، پیاده سازی پشته و عملیات های پشته را معرفی کرده (Stack)، لیست (List) و هیپدرخت هیپ (heap) چیست؟ آموزش هیپ در ساختمان دادهاین صفحه عالی به آموزش هیپ (heap) در ساختمان داده پرداخته و اعمالی که در هرم قابل انجام است و مزایا و معایب حافظه Heap و مثال کدنویسی از Heap را آورده (Heap) میتوان از آرایه ها استفاده کرد.
- برای ذخیره کلکسیونی از دادههای یکسان مانند نامها، نمرات و بقیهی دادههای همسان، آرایه مناسبترین گزینه است.
- آرایه ها به طور گسترده برای الگوریتمهای جستجو مانند جستجوی حبابیآموزش مرتب سازی حبابی (Bubble Sort) بصورت 0 تا 100این صفحه مرتب سازی حبابی (Bubble Sort) را بصورت 0 تا 100 آموزش داده و کدهای مرتب سازی حبابی در C++، پایتون و جاوا آورده شده است شده و یا جستجوی انتخابی مورداستفاده قرار میگیرند.
- در بحث تحلیل و آنالیز دادههای آماری از آرایه ها استفاده میشود؛ بهعنوانمثال برای محاسبات میانگین، میانه و انحراف معیار، استفاده از آرایه گزینه بسیار مناسبی است.
جمع بندی
ساختمان داده آرایه یکی از ساختمان دادههای پرکاربرد در زبانهای برنامه نویسی است که در موارد مختلفی مورداستفاده قرار میگیرد. شاید در نگاه اول کار با آنها راحت به نظر برسد، اما وقتی آرایهرهای چندبعدی وارد مسائل پیچیده ریاضی میشود که نیاز داریم روی آنها عملیات خاصی را پیادهسازی کنیم، کار با آنها دیگر راحت نخواهد بود! البته برای کار با آرایه ها در زبان های برنامه نویسی مختلف کتابخانههایی به وجود آمده است؛ بهعنوانمثال در زبان پایتون کتابخانه Numpy ایجاد شده است و کار با آرایه را بسیار راحتتر کرده است. در این مقاله به بررسی آرایه در برنامه نویسی پرداختیم و جنبههای مختلف آرایه را در زبانهای مختلف مورد بررسی قرار دادیم.
آرایه در برنامه نویسی چیست؟
آرایه یک ساختمان داده با اندازه ثابت است که در آن برای ذخیره المانها یا متغیرهایی با نوع یکسان استفاده میشود. به آرایه میتوان به دید کلکسیونی از متغیرهایی با نوع یکسان نگاه کرد.
چند دسته آرایه در برنامه نویسی وجود دارد؟
بهطورکلی آرایه ها از لحاظ شکل به دودسته کلی تقسیم میشوند؛ آرایه های تکبعدی یا Single-Dimensional و آرایه های چندبعدی یا Multi-Dimensional. آرایه های تکبعدی شامل یک لیست خطی از دادهها است و آرایه های چندبعدی همانند ماتریسها در ریاضیات هستند.