1 / 24

آرایه ها Array

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

marty
Download Presentation

آرایه ها Array

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. آرایه ها Array

  2. تعریف آرایه • لیستی از n عنصر ، متناهی (محدود) ، با عناصر هم نوع ، دسترسی از طریق اندیس که در حافظه در خانه های متوالی حافظه قرار می گیرند. • آرایه به عنوان یک نوع داده انتزاعی • داده ها: مشخصات آرایه • عملگرها: پیمایش، جستجو، مرتب کردن، اضافه و حذف، ادغام • آرایه یک بعدی (خطی) • 10 عنصر از 0 تا 9 • تعریف در C++int a[10] • بازیابی مقدار X=a[3]; • ذخيره مقدار a[3]=X; • در C++اندیس از صفر شروع می شود.

  3. اندازه آرایه • اندازه آرایه : تعداد خانه ها * اندازه هر خانه • int : 2 بایت • float : 4 بایت • char : 1 بایت • boolean : 1 بایت • تابع base(a) آدرس خانه شروع آرایه را برمی گرداند.

  4. آدرس خانه ای خاص در آرایه یک بعدی address a[i] = base (a) + i * sizeof (type(a)) • مثال: در یک آرایه با تعریف float a[200]، اگر آدرس شروع آرایه در حافظه 1000 باشد، a25 در کدام آدرس قرار دارد؟ (25 – 0) × 4 + 1000 = 1100

  5. آرایه دو بعدی (ماتریس)

  6. روش ذخیره ماتریس ها

  7. حالت کلی [L1 … U1 , L2 … U2 , Ln … Un] Array [L … U] of items تعداد عناصر آرایه = U – L + 1 بعدی nتعداد عناصر آرایه n= [U1 – L1 + 1][U2 – L2 + 1][Un – Ln + 1] (space)فضای اشغال شده توسط آرایه = [U1 – L1 + 1][U2 – L2 + 1][Un – Ln + 1] * sizeof(type(array))

  8. آدرس دهی سطری address (a[i,j]) = base (a)+ تعداد عناصر قبل* سایز = base (a) + [(n*i)+j] * sizeof (type(a)) = base (a) + [(u2-l2+1)*(i-l1) + (j-l2)] * sizeof (type(a)) i m= u1-l1+1 j n = u2-l2+1

  9. آدرس دهی ستونی address (a[i,j]) = base (a)+ تعداد عناصر قبل* سایز = base (a) + [(m*j)+i] * sizeof (type(a)) = base (a) + [(u1-l1+1)*(j-l2) + (i-l1)] * sizeof (type(a)) i m= u1-l1+1 j n = u2-l2+1

  10. A [60 , 6] = (60 – 1) × (26 – 1 + 1) + (6 – 1) × 2 + 1000 = 4078 A [20 , 4] = (4 – 1) × (100 – 1 + 1) + (20 – 1) × 2 + 1000 = 1638

  11. آرايه سه بعدی

  12. رابطه بین اندیس ها در ماتریس مربعی • در ماتریس مربعی عناصر روی قطر اصلی دارای آدرس یکسانی در روشهای سطری و ستونی هستند. • اگر i<j باشد آنگاه A[i,j] بالای قطر اصلی است. • اگر i=j باشد آنگاه A[i,j] روی قطر اصلی است. • اگر i>j باشد آنگاه A[i,j] پایین قطر اصلی است. • اگر i+j<n-1 باشد آنگاه A[i,j] بالای قطر فرعی است. • اگر i+j=n-1 باشد آنگاه A[i,j] روی قطر فرعی است. • اگر i+j>n-1 باشد آنگاه A[i,j] پایین قطر فرعی است.

  13. ذخيرهسازيماتريسهاي خاص

  14. ماتریس های خاص

  15. ماتریس های قطری • ماتریس مربعی است که تمامی درایه های آن غیر از قطر اصلی صفر باشد. • این ماتریس ها را در یک آرایه به طول قطر اصلی (تعداد سطرها یا ستون ها)، ذخیره می نماییم. • تعداد عناصر غیر صفر =n • نحوه ذخیره بصورت یک آرایه یک بعدی. • پس عضو (i, i) در اندیسi از آرايه یک بعديقرار دارد. • (نکته: اندیس آرایه ها در C از صفر شروع می شود) 1 0 0 0 03 0 0 0 0 6 0 0 0 0 10

  16. ماتریس های سه قطری • ماتریس مربعی است که تمامی درایه های آن غیر از قطر اصلی، بالای قطر اصلی و پایین قطر اصلی صفر باشد. • تعداد عناصر غیر صفر = n+2(n-1) 1 3 0 0 4 3 9 0 0 1 6 4 0 0 1 2

  17. ماتریس های مثلثی • ماتریس بالا مثلثی: ماتريسمربعيكه تمام درایه های پایین قطر اصلی در آن صفر هستند. • ماتریس پایین مثلثی: ماتريس مربعيكه تمام درایه های بالای قطر اصلی در آن صفر هستند. • تعداد عناصر غیر صفر =n(n+1)/2 1 0 0 0 2 3 0 0 4 5 6 0 7 8 9 10

  18. ذخيره سازي ماتريسهاي خاص - ادامه • اين ماتريسها را مي توان نوع خاصي از ماتريس اسپارس دانست. • ذخيره سازي عناصر غير صفر در يك آرايه يك بعدي جهت صرفه جويي در حافظه.

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

  20. row col value A[1] 0 0 15 A[2] 0 3 22 A[3] 0 5 -15 A[4] 1 1 11 A[5] 1 2 3 A[6] 2 3 -6 A[7] 4 0 91 A[8] 5 2 28 A[0] 6 6 8 تعداد سطرهايماتريس اوليه تعداد ستونهاي ماتريس اوليه تعداد عناصرغير صفر ماتريس اوليه

  21. ترانهاده ماتريس اسپارس برايترانهادهكردناينماتريس شماره ي سطر و ستون را عوض كرده مقدار عنصر را در ستون value قرار ميدهيم: (0,0,15) (0,0,15) (0,3,22) (3,0,22) (0,5,-15) (5,0,-15)

  22. ترانهاده ماتريس اسپارس - مثال

  23. ويژگيهاي كلاس اسپارس classMatrixTerm { friend classSparseMatrix private : introw, col, value;} In SparseMatrix: private: intRows, Cols, Terms; MatrixTermsmArray [MaxTerms];

More Related