کنکور کامپیوتر
0
ورود | ثبت نام
نظرات
اشتراک
بالا
علاقه‌مندی

اشتراک
 

آموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100

در این مقاله موارد زیر بررسی شده است : 1- آرایه چیست 2- انواع اندیس گذاری در آرایه 3- انواع آرایه 4- محاسبه آدرس در آرایه 5- محاسبه شماره در آرایه 6- آرایه در برنامه نویسی 7- مزایای استفاده از آرایه

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

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

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

آرایه‌ی Mark[5] نمرات دانش آموز را در 5 موضوع مختلف نشان می‌دهد که در آن نمرات هر موضوع در یک مکان (اندیس) خاص از آرایه قرار دارند. به عنوان مثال Mark[0]=19 نشان‌دهنده نمره کسب شده در موضوع اول، Mark[1]=20 نمره کسب شده در موضوع دوم و به همین منوال است. برای درک بهتر موضوع می‌توان مثال ذکر شده برای نمرات دانش آموز را با نمایش منطقی و قابل درک زیر نمایش داد.

فیلم آموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100

انواع اندیس گذاری در آرایه

درزبان‌های برنامه‌نویسی، اندیس‌ها از شماره صفر شروع می‌شوند.

ذخیره سازی آرایه در حافظه و انواع آرایه

همان‌طور که در قسمت‌های قبل گفته شد، نمایش منطقی یک آرایه تک بعدی به صورت یک سطر و چندین ستون است که داده‌ها به صورت پشت سر هم در حافظه که همگی از یک نوع بوده و از آدرس مشخصی شروع شده‌اند، ذخیره می‌شوند. اما ما انواع دیگری از آرایه داریم که می‌توان در غالب جدول یا ماتریس (آرایه 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]\) چیست؟

1) 3868
2) 3370
3) 3420
4) 3642

حل: گزینه 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]\) به روش ستونی کدام است؟

1) 1444
2) 1544
3) 844
4) 744

حل: گزینه 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 کدام است؟

1) \( \left(\mathrm{i}-\mathrm{1}\right)\mathrm{np+}\left(\mathrm{j}-\mathrm{1}\right)\mathrm{m+}k-1\)
2) \(\left(\mathrm{i}-\mathrm{1}\right)\mathrm{np+}\left(\mathrm{j}-\mathrm{1}\right)\mathrm{p+}k-1\)
3) \(\mathrm{mnp\ +\ np\ \times\ 1}\)
4) inp + jp + k

حل: گزینه 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 کدام است؟

1) \(\mathrm{a\ \times\ b\ \times\ c\ +\ b\ \times\ c\ \times\ 1}\)
2) \(\mathrm{a\ \times\ b\ \times\ c\ +\ b\ \times\ c\ \times\ 2}\)
3) \(\left(\mathrm{k}-\mathrm{1}\right)\mathrm{ab\ +\ }\left(\mathrm{j}-\mathrm{1}\right)\mathrm{a\ +\ }\left(\mathrm{i}-\mathrm{1}\right)\)
4) \(\left(\mathrm{i}-\mathrm{1}\right)\mathrm{bc\ +\ }\left(\mathrm{j}-\mathrm{1}\right)\mathrm{c\ +\ }\left(\mathrm{k}-\mathrm{1}\right)\)

حل: گزینه 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)\]

محاسبه شماره خانه در آرایه سه بعدی

برای این که محاسبه کنیم \(\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ام به صورت سطری است

آرایه در برنامه نویسی

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

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

آرایه در 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 موضوع ذخیره کنیم، دیگر نیازی به تعریف متغیرهای جداگانه برای هر موضوع نیست بلکه می‌توانیم آرایه‌ای تعریف کنیم که عناصر داده را در مکان‌های پشت سر هم حافظه ذخیره کند. به منظور آشنایی بیشتر می‌توانید به ابتدای مقاله مراجعه کنید.

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

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

26819 نفر تاکنون در دوره‌های آموزشی کنکور کامپیوتر شرکت کرده‌اند.

همچنین هر گونه سوالی در مورد کلاس‌های آنلاین کنکور کامپیوتر و یا تهیه فیلم‌ها و یا رزرو مشاوره تک جلسه‌ای تلفنی با استاد رضوی دارید می‌توانید به طرق زیر از تیم پشتیبانی بپرسید:

آی دی تلگرام تیم پشتیبانی:     konkurcomputer_admin@

شماره ثابت موسسه:   09378555200

امتیازدهی5 1 1 1 1 1 1 1 1 1 15.00 امتیاز (3 رای)
اشتراک
بارگذاری نظرات
تلگرام اینستاگرام