آرایه در ساختمان داده چیست؟
به مجموعهای از دادههای پشت سر هم حافظه که همگی از یک نوع بوده و از آدرس مشخصی شروع میشوند، آرایه گفته میشود. آرایه سادهترین ساختمان دادهآموزش ساختمان داده و الگوریتمهر ساختمان داده یک نوع فرمت ذخیرهسازی و مدیریت دادهها در کامپیوتر است، که امکان دسترسی و اصلاح کارآمد آن دادهها را برای یکسری از الگوریتمها و کاربردها فراهم میکند، در این صفحه به بررسی و آموزش ساختمان داده و الگوریتم پرداخته شده است ای است که در آن میتوان به هر داده مستقیماً تنها با استفاده از شماره اندیس آن دسترسی داشت.
بهعنوان مثال، اگر بخواهیم نمرههای کسب شده توسط یک دانش آموز را در 5 موضوع ذخیره کنیم، دیگر نیازی به تعریف متغیرهای جداگانه برای هر موضوع نیست بلکه میتوانیم آرایهای تعریف کنیم که عناصر داده را در مکانهای پشت سر هم حافظه ذخیره کند.
آرایهی Mark[5] نمرات دانش آموز را در 5 موضوع مختلف نشان میدهد که در آن نمرات هر موضوع در یک مکان (اندیس) خاص از آرایه قرار دارند. به عنوان مثال Mark[0]=19 نشاندهنده نمره کسب شده در موضوع اول، Mark[1]=20 نمره کسب شده در موضوع دوم و به همین منوال است. برای درک بهتر موضوع میتوان مثال ذکر شده برای نمرات دانش آموز را با نمایش منطقی و قابل درک زیر نمایش داد.
فیلم آموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100
قبل از اینکه به ادامه مقاله آرایه در ساختمان دادهساختمان داده چیستساختمان داده واقعا چیست؟ این صفحه عالی توضیح داده که ساختمان داده چیست و گفته چرا باید ساختمان دادهها را یاد بگیریم؟ و انواع و عملیات روی ساختمان داده را گفته بپردازیم توصیه میکنیم که فیلم زیر که در خصوص تحلیل و بررسی درس ساختمان داده رشته کامپیوتر است را مشاهده کنید، در این فیلم توضیح داده شده که فیلم درس ساختمان داده برای چه افرادی مناسب است و همین طور در خصوص فصول مختلف درس ساختمان داده و اهمیت هر کدام از فصول ساختمان داده صحبت شده است.
در ادامه این مقاله فیلم های رایگان ساختمان داده که به آنها نیاز دارید نیز در اختیارتان قرار گرفته است.
خب حالا مجددا به توضیح آرایه در ساختمان داده ادامه میدهیم
انواع اندیس گذاری در آرایه
- شاخصگذاری مبتنی بر صفر (Zero based indexing): اولین عنصر آرایه به اندیس 0 اشاره دارد.
- شاخصگذاری مبتنی بر یک (One based indexing): اولین عنصر آرایه به اندیس 1 اشاره دارد.
- شاخصگذاری مبتنی بر n (n based indexing): در این مورد میتوان اندیس پایه را متناسب با نیازمان انتخاب کنیم.
ذخیره سازی آرایه در حافظه و انواع آرایه
همانطور که در قسمتهای قبل گفته شد، نمایش منطقی یک آرایه تک بعدی به صورت یک سطر و چندین ستون است که دادهها به صورت پشت سر هم در حافظه که همگی از یک نوع بوده و از آدرس مشخصی شروع شدهاند، ذخیره میشوند. اما ما انواع دیگری از آرایه داریم که میتوان در غالب جدول یا ماتریس (آرایه 2 بعدی-2D) نشان داد که برای دسترسی به آن باید از 2 اندیس استفاده کرد که اندیس اول مشخص کننده سطر و اندیس دوم مشخص کننده ستون آرایه است که آن را به صورت Array[n,m] یا Array[n][m] نمایش میدهیم.
یک آرایه دو بعدی که به شکل یک ماتریس با جدول نشان داده شده است.
به همین شکل میتوان یک آرایه 3 بعدی به صورت Array[n,m,k] و همچنین n بعدی تعریف کرد.
فرمول آرایه سه بعدی در ساختمان داده
برای محاسبه آدرس خانهی \(\mathrm{A}\left[\mathrm{i,\ j,\ k}\right]\) در آرایه \(\mathrm{A}\left[\mathrm{L}_\mathrm{1}..\mathrm{U}_\mathrm{1},\mathrm{L}_\mathrm{2}..\mathrm{U}_\mathrm{2},\mathrm{L}_\mathrm{3}..\mathrm{U}_\mathrm{3}\right]\) با توجه به وضعیت (سطری یا ستونی) همواره میتوانیم به صورت زیر عمل کنیم:
α = آدرس شروع آرایه (در صورت عدم بیان آدرس شروع \(\alpha=\mathrm{\circ}\) فرض میکنیم)
β = فضای نوع عناصر آرایه (در صورت عدم بیان فضای نوع عناصر آرایه 1 = β فرض میکنیم)
\(\mathrm{A}\left[\overline{\mathrm{i,\ j,\ k}}\right]=\mathrm{\alpha+}\left[\left(\mathrm{k}-\mathrm{L}_\mathrm{3}\right)\left(\mathrm{U}_\mathrm{2}-\mathrm{L}_\mathrm{2}+\mathrm{1} \right)\left(\mathrm{U}_\mathrm{1}-\mathrm{L}_\mathrm{1}+\mathrm{1} \right)+\left(\mathrm{j}-\mathrm{L}_\mathrm{2}\right)\left(\mathrm{U}_\mathrm{1}-\mathrm{L}_\mathrm{1}+\mathrm{1} \right)+\left(\mathrm{i}-\mathrm{L}_\mathrm{1}\right)\right]\times\mathrm{\beta}\) (آدرس سطری)
\(\mathrm{A}\left[\overline{\mathrm{i,\ j,\ k}}\right]=\mathrm{\alpha+}\left[\left(\mathrm{i}-\mathrm{L}_\mathrm{1}\right)\left(\mathrm{U}_\mathrm{2}-\mathrm{L}_\mathrm{2}+\mathrm{1} \right)\left(\mathrm{U}_\mathrm{3}-\mathrm{L}_\mathrm{3}+\mathrm{1} \right)+\left(\mathrm{j}-\mathrm{L}_\mathrm{2}\right)\left(\mathrm{U}_\mathrm{3}-\mathrm{L}_\mathrm{3}+\mathrm{1} \right)+\left(\mathrm{k}-\mathrm{L}_\mathrm{3}\right)\right]\times\mathrm{\beta}\) (آدرس ستونی)
مثال: آرایه 3 بعدی \(\mathrm{A}\left[\mathrm{1:15,\ }-\mathrm{5:5,\ 10:25}\right]\) برای ذخیره اعداد صحیح به طول 2 بایت به کار گرفته است. اگر آرایه به صورت سطری از آدرس 2000 به بعد ذخیره شده باشد آدرس عنصر \(\mathrm{A}\left[\mathrm{5,\ 2,\ 15}\right]\) چیست؟
حل: گزینه 4 درست است.
\[ \mathrm{A:\ }\left[\mathrm{1..15,}-\mathrm{5..5,\ 10..25}\right]\ \ \ \ \ \mathrm{\beta\ =\ 2\ \ \ \ \ \alpha\ =\ 2000} \]
\[\mathrm{A}\left[\overline{\mathrm{5}\mathrm{,\ }\mathrm{2},\mathrm{15}}\right]=\mathop{\mathrm{\ }\require{enclose}, \enclose{horizontalstrike}{\mathrm{\alpha}}\mathrm{\ }}^{\mathrm{2000}}+\left[\left(\mathrm{5}\mathrm{-}\mathrm{1}\right)\left(\mathrm{5}\mathrm{-}\left(-\mathrm{5}\right)\mathrm{+}\mathrm{1}\right)\left(\mathrm{25}\mathrm{-}\mathrm{10}\mathrm{+}\mathrm{1}\right)+\left(\mathrm{2}\mathrm{-}\left(-\mathrm{5}\right)\right)\left(\mathrm{25}\mathrm{-}\mathrm{10}\mathrm{+}\mathrm{1}\right)+\left(\mathrm{15}\mathrm{-}\mathrm{10}\right)\right]\times \mathop{\mathrm{\ }\require{enclose}\enclose{horizontalstrike}{ß}\mathrm{\ }}^{\mathrm{2}}=\mathrm{2000}\mathrm{+}\mathrm{1642}\mathrm{=}\mathrm{3642}\]
این روش برای حالت n بعدی نیز به راحتی قابل تعمیم است.
در صورت عدم بیان نوع آدرس (سطری یا ستونی) بهطور پیشفرض آدرس سطری در نظر گرفته میشود.
مثال: آرایه دو بعدی \(\mathrm{X}\left[\mathrm{-5..5,\ 3..33}\right]\) در آدرس 400 به بعد حافظه قرار دارد و هر خانه آرایه احتیاج به 4 بایت دارد. آدرس عنصر \(\mathrm{X}\left[\mathrm{4,10}\right]\) به روش ستونی کدام است؟
حل: گزینه 4 درست است.
\[\mathrm{X}\left[-\mathrm{5..5,\ 3..33}\right]\ \ \ \ \ \mathrm{\alpha\ =\ 400\ \ \ \ \beta\ =\ 4}\]
\[\mathrm{X}\left[\overline{\mathrm{4},\mathrm{10}}\right]=\mathop{\mathrm{\ }\require{enclose}, \enclose{horizontalstrike}{\mathrm{\alpha}}\mathrm{\ }}^{\mathrm{400}}+\left[\left(\mathrm{10}\mathrm{-}\mathrm{3}\right)\left(\mathrm{5}\mathrm{-}\left(-\mathrm{5}\right)+\mathrm{1}\right)+\left(\mathrm{4}\mathrm{-}\left(-\mathrm{5}\right)\right)\right]\times \mathop{\mathrm{\ }\require{enclose} \enclose{horizontalstrike}{ß}\mathrm{\ }}^{\mathrm{4}}=\mathrm{400}\mathrm{+}\mathrm{344}\mathrm{\ =\ }\mathrm{744}\]
گاهی اوقات یک آرایه چند بعدی را به صورت سطری یا ستونی در یک آرایه یک بعدی ذخیره میکنند، در این صورت آدرس خانه مشخص در آرایه چند بعدی به شکل سطری یا ستونی در آرایه یک بعدی مورد نظر میباشد.
مثال: آرایه 3 بعدی \(\mathrm{A}\left[\mathrm{1\ ..\ m,\ 1\ ..\ n,\ 1\ ..\ p}\right]\) در یک آرایه یک بعدی \(\mathrm{B}\left[\mathrm{1\ ..\ m\ \times\ n\ \times\ p}\right]\) به روش سطر به سطر ذخیره شده است. آدرس عنصر \(\mathrm{A}\left[\mathrm{i,\ j,\ k}\right]\) در B کدام است؟
حل: گزینه 2 درست است.
\[\mathrm{A}\left[\mathrm{1\ ..\ m,\ 1\ ..\ n,\ 1\ ..\ p}\right]\]
\[\mathrm{A}\left[\overline{\mathrm{i,\ j,\ k}}\right]=\mathop{\mathrm{\ }\require{enclose}, \enclose{horizontalstrike}{\mathrm{\alpha}}\mathrm{\ }}^{\mathrm{\circ }}+\left[\left(\mathrm{i}\mathrm{-}\mathrm{1}\right)\left(\mathrm{n}\mathrm{-}\mathrm{1}\mathrm{+\ l}\right)\left(\mathrm{p}\mathrm{-}\mathrm{1}\mathrm{+\ l}\right)+\left(\mathrm{j}\mathrm{-}\mathrm{1}\right)\left(\mathrm{p}\mathrm{-}\mathrm{1}\mathrm{+\ l}\right)+\left(\mathrm{k}\mathrm{-}\mathrm{1}\right)\right]\times \mathop{\mathrm{\ }\require{enclose}, \enclose{horizontalstrike}{ß}\mathrm{\ }}^{\mathrm{1}}=\left(\mathrm{i}\mathrm{-}\mathrm{1}\right)\mathrm{np+}\left(\mathrm{j}\mathrm{-}\mathrm{1}\right)\mathrm{p+}\left(\mathrm{k}\mathrm{-}\mathrm{1}\right)\]
مثال: آرایه سه بعدی \(\mathrm{M}\left[\mathrm{1\ ..\ a,\ 1\ ..\ b,\ 1\ ..\ c}\right]\) در یک آرایه یک بعدی \(\mathrm{N}\left[\mathrm{1\ ..\ a\ \times\ b\ \times\ c}\right]\) به روش ستونی ذخیره شده است. آدرس عنصر \(\mathrm{M}\left[\mathrm{i,\ j,\ k}\right]\) در آرایه N کدام است؟
حل: گزینه 3 درست است.
\[\mathrm{M}\left[\mathrm{1\ ..\ a,\ 1\ ..\ b,\ 1\ ..\ c}\right]\]
\[\mathrm{M}\left[\overline{\mathrm{i,\ j\ k}}\right]=\mathop{\mathrm{\ }\require{enclose}, \enclose{horizontalstrike}{\mathrm{\alpha}}\mathrm{\ }}^{\mathrm{\circ }}+\left[\left(\mathrm{k}\mathrm{-}\mathrm{1}\right)\left(\mathrm{b}\mathrm{-}\mathrm{l\ +}\mathrm{1}\right)\left(\mathrm{a}\mathrm{-}\mathrm{l\ +}\mathrm{1}\right)+\left(\mathrm{j}\mathrm{-}\mathrm{1}\right)\left(\mathrm{a}\mathrm{-}\mathrm{l\ +}\mathrm{1}\right)+\left(\mathrm{i}\mathrm{-}\mathrm{1}\right)\right]\times \mathop{\mathrm{\ }\require{enclose}, \enclose{horizontalstrike}{ß}\mathrm{\ }}^{\mathrm{1}}=\left(\mathrm{k}\mathrm{-}\mathrm{1}\right)\mathrm{ba\ +\ }\left(\mathrm{j}\mathrm{-}\mathrm{1}\right)\mathrm{a\ +\ }\left(\mathrm{i}\mathrm{-}\mathrm{1}\right)\]
فیلم های رایگان ساختمان داده که به آنها نیاز دارید
فیلم ساختمان داده جلسه 1
فیلم ساختمان داده جلسه 1
فیلم ساختمان داده جلسه 2
فیلم ساختمان داده جلسه 3
فیلم ساختمان داده جلسه 4
فیلم ساختمان داده جلسه 5
فیلم ساختمان داده جلسه 6
فیلم ساختمان داده جلسه 7
فیلم ساختمان داده جلسه 8
حل تست ساختمان و الگوریتم جلسه 1
حل تست ساختمان و الگوریتم جلسه 2
حل تست ساختمان و الگوریتم جلسه 3
حل تست ساختمان و الگوریتم جلسه 4
انواع پیمایشهای درخت
نحوه ساخت درخت BST
آموزش درخت B-Tree
بررسی مرتبه ساخت هیپ
آموزش مرتب سازی سریع
آموزش شبکه شار
حل سوالات ساختمان ارشد کامپیوتر 99
حل ساختمان ارشد 95 بخش 1
حل ساختمان ارشد 95 بخش 2
محاسبه شماره خانه در آرایه سه بعدی
برای این که محاسبه کنیم \(\mathrm{A}\left[\mathrm{i,\ j,\ k}\right]\) چندمین خانه سطری یا ستونی ماتریس \(\mathrm{A}\left[\mathrm{L}_\mathrm{1}..\mathrm{U}_\mathrm{1},\mathrm{L}_\mathrm{2}..\mathrm{U}_\mathrm{2},\mathrm{L}_\mathrm{3}..\mathrm{U}_\mathrm{3}\right]\) است کافیست در شرایطی که \(\mathrm{\alpha}=\mathrm{\circ}\) و 1 = β در نظر گرفتهایم به آدرس \(\mathrm{A}\left[\mathrm{i,\ j,\ k}\right]\) یک واحد اضافه کنیم.
\[\require{enclose} \mathrm{A}\left[\overline{\mathrm{i,\ j,\ k}}\right]=\left(\mathop{\mathrm{\ }\mathrm{\mathrm{\alpha} }\mathrm{\ }}^{ \enclose{horizontalstrike}{0} }+\left[\left(\mathrm{i}\mathrm{-}{\mathrm{L}}_{\mathrm{1}}\right)\left({\mathrm{U}}_{\mathrm{2}}-{\mathrm{L}}_{\mathrm{2}}+\mathrm{1}\right)\left({\mathrm{U}}_{\mathrm{3}}-{\mathrm{L}}_{\mathrm{3}}+\mathrm{1}\right)+\left(\mathrm{j}\mathrm{-}{\mathrm{L}}_{\mathrm{2}}\right)\left({\mathrm{U}}_{\mathrm{3}}-{\mathrm{L}}_{\mathrm{3}}+\mathrm{1}\right)+\left(\mathrm{k}\mathrm{-}{\mathrm{L}}_{\mathrm{3}}\right)\right]\times \mathop{\mathrm{\ }\mathrm{\mathrm{\beta} }\mathrm{\ }}^{\mathrm{1}}\right)+\mathrm{1}\mathrm{\ =\ }\left[\left(\mathrm{i}\mathrm{-}{\mathrm{L}}_{\mathrm{1}}\right)\left({\mathrm{U}}_{\mathrm{2}}-{\mathrm{L}}_{\mathrm{2}}+\mathrm{1}\right)\left({\mathrm{U}}_{\mathrm{3}}-{\mathrm{L}}_{\mathrm{3}}+\mathrm{1}\right)+\left(\mathrm{j}\mathrm{-}{\mathrm{L}}_{\mathrm{2}}\right)\left({\mathrm{U}}_{\mathrm{3}}-{\mathrm{L}}_{\mathrm{3}}+\mathrm{1}\right)+\left(\mathrm{k}\mathrm{-}{\mathrm{L}}_{\mathrm{3}}\right)\right]+\mathrm{1}\]
\[\mathrm{A}\left[\overline{\mathrm{i,\ j,\ k}}\right]=\left(\mathop{\mathrm{\ }\mathrm{\require{enclose}, \enclose{horizontalstrike}{\mathrm{\alpha}} }\mathrm{\ }}^{\mathrm{\circ }}+\left[\left(\mathrm{k}\mathrm{-}{\mathrm{L}}_{\mathrm{3}}\right)\left({\mathrm{U}}_{\mathrm{2}}-{\mathrm{L}}_{\mathrm{2}}+\mathrm{1}\right)\left({\mathrm{U}}_{\mathrm{1}}-{\mathrm{L}}_{\mathrm{1}}+\mathrm{1}\right)+\left(\mathrm{j}\mathrm{-}{\mathrm{L}}_{\mathrm{2}}\right)\left({\mathrm{U}}_{\mathrm{1}}-{\mathrm{L}}_{\mathrm{1}}+\mathrm{1}\right)+\left(\mathrm{i}\mathrm{-}{\mathrm{L}}_{\mathrm{1}}\right)\right]\times \mathop{\mathrm{\ }\mathrm{\require{enclose}, \enclose{horizontalstrike}{\mathrm{\beta\ } }}\mathrm{\ }}^{\mathrm{1}}\right)+\mathrm{1}\mathrm{\ =\ }\left[\left(\mathrm{k}\mathrm{-}{\mathrm{L}}_{\mathrm{3}}\right)\left({\mathrm{U}}_{\mathrm{2}}-{\mathrm{L}}_{\mathrm{2}}+\mathrm{1}\right)\left({\mathrm{U}}_{\mathrm{1}}-{\mathrm{L}}_{\mathrm{1}}+\mathrm{1}\right)+\left(\mathrm{j}\mathrm{-}{\mathrm{L}}_{\mathrm{2}}\right)\left({\mathrm{U}}_{\mathrm{1}}-{\mathrm{L}}_{\mathrm{1}}+\mathrm{1}\right)+\left(\mathrm{i}\mathrm{-}{\mathrm{L}}_{\mathrm{1}}\right)\right]+\mathrm{1}\]
مثال: در آرایه \(\mathrm{A}\left[\mathrm{'a'\ ..\ 'e'\ ,\ 1\ ..\ 4}\right]\)، درایه \(\mathrm{A}\left[\mathrm{'b'\ ,\ 3}\right]\) چندمین خانه آرایه است؟
چون وضعیت سطری یا ستونی مشخص نشده است پیشفرض به صورت سطری عمل میکنیم در ضمن فاصله 'a' .. 'e' را به شکل 5 .. 1 در نظر میگیریم بنابراین وضعیت \(\mathrm{A}\left[\mathrm{2\ ,\ 3}\right] \) در \(\mathrm{A}\left[\mathrm{1\ ..\ 5\ ,\ 1\ ..\ 4}\right]\) مد نظر است.
\[\mathrm{A}\left[\mathrm{2\ ,\ 3}\right]=\left(\mathrm{\circ}+\left[\left(\mathrm{2}-\mathrm{1}\right)\left(\mathrm{4}-\mathrm{1+1}\right)+\left(\mathrm{3}-\mathrm{1}\right)\right]\times\mathrm{1} \right)+\mathrm{1\ =7}\]
4 , 'a' | 3 , 'a' | 2 , 'a' | 1 , 'a' |
4 , 'b' | 3 , 'b' | 2 , 'b' | 1 , 'b' |
4 , 'c' | 3 , 'c' | 2 , 'c' | 1 , 'c' |
4 , 'd' | 3 , 'd' | 2 , 'd' | 1 , 'd' |
4 , 'e' | 3 , 'e' | 2 , 'e' | 1 , 'e' |
\(\mathrm{A}\left[\mathrm{2\ ,\ 3}\right]\) خانه 7ام به صورت سطری است
خرید فیلم های ساختمان داده
در حال حاضر فیلم آموزش ساختمان داده استاد رضوی پرطرفدارترین و پرفروشترین فیلم آموزشی ساختمان داده و الگوریتم کشور است و هر سال بیش از ۶۰۰۰ نفر این فیلم را تهیه میکنند
ویدیو درس ساختمان داده
تخفیف سه ماه طلایی تا ۳ آبان
30%ویدیو نکته و تست ساختمان داده و طراحی الگوریتم
تخفیف سه ماه طلایی تا ۳ آبان
30%آرایه در برنامه نویسی
در برنامه نویسی اغلب نیاز به ذخیره حجم زیادی از دادهها از نوع مشابه داریم؛ برای ذخیره چنین حجم عظیمی از دادهها باید متغیرهای متعددی تعریف کرد. همچنین لازم است در حین نوشتن برنامه، نام همه متغیرها به خاطر سپرده شود که بسیار سخت است. برای حل این موضوع در برنامه نویسی بهتر است یک آرایه تعریف کرده و همه عناصر را در آن ذخیره کنیم.
مزایای استفاده از آرایه
- میتوان چندین عنصر داده از یک نوع را با استفاده از یک نام واحد نشان داد.
- دسترسی یا جستجوی یک عنصر در یک آرایه با استفاده از شماره اندیس آسان است.
- یک آرایه را میتوان به راحتی تنها با افزایش 1 مقدار در اندیس، طی کرد.
- آرایهها حافظه را در مکانهای همجوار برای تمام عناصر اختصاص میدهند.
آرایه در C
برای ایجاد آرایه در زبان C ابتدا نوع داده را تعریف کرده (مانند int) سپس نام آرایه و به دنبالش براکت باز و بسته ([]) مشخص میکنیم. همچنین برای درج مقادیر در آن از یک لیست که اعداد داخلش به وسیلهی کاما (,) از هم جدا شده، استفاده میکنیم.
int myNumbers[] = {25, 50, 75, 100} ;
اکنون متغیری ایجاد کردیم که آرایهای از چهار عدد صحیح را در خود جای میدهد.
به منظور کسب اطلاعات بیشتر در خصوص کار با آرایه در زبان C میتوانید به این لینک مراجعه کنید.
آرایه در C++
برای ایجاد آرایه در زبان C++ ابتدا نوع داده را تعریف میکنیم سپس نام آرایه و به دنبالش اندازه آرایه در براکت باز و بسته ([]) را به همراه عناصری که باید در آن ذخیره شوند مشخص میکنیم.
string cars[4] = {"Volvo", "BMW", "Ford", "Mazda"};
به منظور کسب اطلاعات بیشتر در خصوص کار با آرایه در زبان ++C میتوانید به این لینک مراجعه کنید.
آرایه در پایتون
زبان برنامه نویسی Python سرویس از پیش تعریف شدهای برای آرایهها ندارد اما به جای آن میتوان از لیستها (Lists) استفاده کرد. به عنوان مثال لیست زیر شامل نام 3 ماشین است که در متغیر cars ذخیره شده است.
cars = ["Ford", "Volvo", "BMW"]
به منظور کسب اطلاعات بیشتر در خصوص کار با آرایه در زبان Python میتوانید به این لینک مراجعه کنید.
آرایه در جاوا
در زبان برنامه نویسی Java برای ساخت یک آرایه نوع متغیر را با براکت تعریف کرده و سپس دادهها را به وسیله یک لیست که عناصر داخلش به وسیلهی کاما (,) از هم جدا شده، در آن درج میکنیم.
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
به منظور کسب اطلاعات بیشتر در خصوص کار با آرایه در زبان Java میتوانید به این لینک مراجعه کنید.
کدهای عملیات مهم روی ساختمان داده آرایه
یافتن ماکسیمم در آرایه
FindMax (A : integer[n]) : integer
{
var maxIndex : integer ;
maxIndex = 1;
for i = 2 to n do
if A[i] \gt A[maxIndex] then
maxIndex = i;
return maxIndex;
}
یافتن ماکسیمم و مینیمم به صورت همزمان در آرایه
FindMax (A : integer[n]; ref maxIndex, ref minIndex : integer)
{
maxIndex = 1;
minIndex = 1;
for i = 2 to n do
{
if A[i] \gt A[maxIndex] then
maxIndex = i;
else if A[i] \lt A[minIndex] then
minIndex = i;
}
}
جست و جوی دودویی در آرایه
BinarySearch(L:ARRAYl n:integer; K:keyType): integer
{
// L is a sorted list (increasing) of elements
// returns index of the matched element, or -1
// l= lower bound, u= upper bound, m = (u+1)/2
var l, u : integer;
l = 1;
u = n;
while 1 \le u do
{
m = (l + u) / 2;
if L[m] == k then
return m;
else if L[m] \lt k then
l = m + 1;
else
u = m - 1;
}
return -1;
}
جمعبندی
همانطور که از این مقاله یاد گرفتیم، آرایهها از مباحث مهم در درس ساختمان داده و طراحی الگوریتمآموزش طراحی الگوریتم به زبان سادهدرس طراحی الگوریتم یکی از مهمترین و بنیادیترین دروس رشته کامپیوتر است. هدف از این درس، معرفی روشهای مختلف طراحی الگوریتمها برای حل مسائل گوناگون است، در این صفحه به معرفی و آموزش طراحی الگوریتم پرداخته شده است.به شمار میروند که در برنامه نویسی نیز کاربردهای زیادی دارد. وجود آرایه به ما کمک میکند تا برنامههای بهینهتری طراحی کنیم زیرا الگوریتمهایی که روی آرایهها اعمال میشوند، سرعت اجرای برنامه را افزایش میدهند. امید است که با مطالعه این مقاله پیش زمینه ذهنی مناسبی جهت کار با آرایه پیدا کرده باشید.
آرایه در ساختمان داده چیست و چگونه در حافظه ذخیره میشود؟
به مجموعهای از دادههای پشت سر هم حافظه که همگی از یک نوع بوده و از آدرس مشخصی شروع میشوند، آرایه گفته میشود. آرایه سادهترین ساختمان دادهای است که در آن میتوان به هر داده مستقیماً تنها با استفاده از شماره اندیس آن دسترسی داشت.
مثلا اگر بخواهیم نمرههای کسب شده توسط یک دانش آموز را در 5 موضوع ذخیره کنیم، دیگر نیازی به تعریف متغیرهای جداگانه برای هر موضوع نیست بلکه میتوانیم آرایهای تعریف کنیم که عناصر داده را در مکانهای پشت سر هم حافظه ذخیره کند. به منظور آشنایی بیشتر میتوانید به ابتدای مقاله مراجعه کنید.
چرا آرایه در برنامه نویسی اهمیت دارد؟
در برنامه نویسی اغلب نیاز به ذخیره حجم زیادی از دادهها از نوع مشابه داریم؛ برای ذخیره چنین حجم عظیمی از دادهها باید متغیرهای متعددی تعریف کرد. همچنین لازم است در حین نوشتن برنامه، نام همه متغیرها به خاطر سپرده شود که بسیار سخت است. برای حل این موضوع در برنامه نویسی بهتر است یک آرایه تعریف کرده و همه عناصر را در آن ذخیره کنیم.