آرایه ها Array

24
ها ه ی را اArray 1

description

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

Transcript of آرایه ها Array

Page 1: آرایه ها  Array

1

Arrayآرایه ها

Page 2: آرایه ها  Array

2

تعریف آرایه عنص�ر ، متن�اهی )مح�دود( ، ب�ا عناص�ر nلیس�تی از •

هم ن�وع ، دسترس�ی از طری�ق ان�دیس ک�ه در حافظ�ه در خ�انه های �متو�الی ح�افظه قرار� می� گیرند.

آرایه به عنوان یک نوع داده انتزاعی•داده ها: مشخصات آرایه▫عملگره�ا: پیم�ایش، جس�تجو، م�رتب ک�ردن، اض�افه و ح�ذف، ▫

ادغام

آرایه یک بعدی )خطی(•9 تا 0 عنصر از 10 ▫C++ int a[10]تعریف در ▫;X=a[3]بازیابی مقدار ▫;a[3]=Xذخيره مقدار ▫++ اندیس از صفر شروع می شود.Cدر ▫

Page 3: آرایه ها  Array

3

اندازه آرایه

ان�دازه آرای�ه : تع�داد خان�ه ه�ا * ان�دازه ه�ر •خانه

▫int : 2بایت ▫float : 4بایت ▫char : 1بایت ▫boolean : 1بایت

آدرس خان�ه ش�روع آرای�ه را base(a)تابع •برمی گرداند.

Page 4: آرایه ها  Array

4

آدرس خانه ای خاص در آرایه یک بعدی

address a[i] = base (a) + i * sizeof (type(a))

تعریف • با آرایه یک در floatمثال: a[200] در آرای��ه ش��روع آدرس اگ��ر ، در ک�دام آدرس a25 باش�د، 1000حافظ�ه

قرار دارد؟(25 – 0) × 4 + 1000 = 1100

Page 5: آرایه ها  Array

5

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

Page 6: آرایه ها  Array

6

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

Page 7: آرایه ها  Array

7

حالت کلی

[L1 … U1 , L2 … U2 , Ln … Un]Array [L … U] of itemsU – L + 1 = تعداد عناصر آرایه n= [U1 – L1 تعداد عناصر آرایهn بعدی+ 1][U2 – L2 + 1][Un – Ln + 1]

(space)فض�ای اش�غال ش�ده توس�ط آرای�ه =

[U1 – L1 + 1][U2 – L2 + 1][Un – Ln + 1] * sizeof(type(array))

Page 8: آرایه ها  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

j

m= u1-l1+1

n = u2-l2+1

Page 9: آرایه ها  Array

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

j

m= u1-l1+1

n = u2-l2+1

Page 10: آرایه ها  Array

10

Page 11: آرایه ها  Array

11

A [60 , 6] = (60 – 1) × (26 – 1 + 1) +

(6 – 1 × )2 + 1000 = 4078A [20 , 4] = (4 – 1) × (100 – 1 +

1) + (20 – 1) × 2 + 1000 = 1638

Page 12: آرایه ها  Array

آرايه سه بعدی

Page 13: آرایه ها  Array

13

رابطه بین اندیس ها در ماتریس مربعی

دارای • اص�لی قط�ر روی عناص�ر م�ربعی م�اتریس در آد�رس یکسانی در روشه�ای سطری و �ستونی هستند.

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

است.آنگ�اه i+j=n-1اگ�ر • باش�د A[i,j] ف�رعی قط�ر روی

است.آنگ�اه i+j>n-1اگ�ر • باش�د A[i,j] پ�ایین قط�ر ف�رعی

است.

Page 14: آرایه ها  Array

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

Page 15: آرایه ها  Array

15

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

Page 16: آرایه ها  Array

ماتریس های قطری

اس�ت ک�ه تم�امی درای�ه ه�ای آن غ�یر از قط�ر اص�لی ماتریس م�ربعی•

صفر باشد.

)تع�داد • اص�لی قط�ر ط�ول ب�ه آرای�ه ی�ک در را ه�ا م�اتریس این

سطرها یا ستون ها(، ذخیره می نماییم.

تعداد عناصر غیر صفر =n

.نحوه ذخیره بصورت یک آرایه یک بعدی

( پس عضوi, i در اندیس )i قرار دارد. از آرايه یک بعدي

نکته: اندیس آرایه ها در(C)از صفر شروع می شود

16

1 0 0 0

0 3 0 0

0 0 6 0

0 0 0 10

Page 17: آرایه ها  Array

ماتریس های سه قطری

اس�ت ک�ه تم�امی درای�ه ه�ای آن غ�یر از قط�ر اص�لی، ماتریس م�ربعی•

باالی قطر اصلی و پایین قطر اصلی صفر باشد.

= تعداد عناصر غیر صفرn+2)n-1(

17

1 3 0 0

4 3 9 0

0 1 6 4

0 0 1 2

Page 18: آرایه ها  Array

ماتریس های مثلثی

پ�ایین • تم�ام درای�ه ه�ای ب�اال مثل�ثی: م�اتريس م�ربعي ك�ه ماتریس

قطر اصلی در آن صفر هستند.

ماتریس پ�ایین مثل�ثی: م�اتريس م�ربعي ك�ه تم�ام درای�ه ه�ای ب�االی •

قطر اصلی در آن صفر هستند.

n)n+1(/2= تعداد عناصر غیر صفر •

18

1 0 0 0

2 3 0 0

4 5 6 0

7 8 9 10

Page 19: آرایه ها  Array

ذخيره سازي ماتريسهاي خاص - ادامه

اين ماتريسها را مي توان نوع خاصي از ماتريس اسپارس •دانست.

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

Page 20: آرایه ها  Array

ماتریس پراکنده یا اسپارس:ماتریس هایی که اکثریت عناصر آنها مقدار صفر •

دارند .با توجه به تعداد زیاد صفرها و بزرگ بودن •

ماتریسها ایجاد روش بهینه برای ذخیره سازی

راه حل: استفاده از یک آرایه دو بعدی با سه ستون

Page 21: آرایه ها  Array

21

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

Page 22: آرایه ها  Array

ترانهاده ماتريس اسپارس

براي ترانهاده كردن اين ماتريس شماره ي سطر و ستون را عوض كرده مقدار عنصر را

قرار مي دهيم:valueدر ستون

( 0,0,15( )0,0,15)( 0,3,22( )3,0,22)( 0,5-,15( )5,0-,15)

Page 23: آرایه ها  Array

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

Page 24: آرایه ها  Array

ويژگيهاي كالس اسپارس

class MatrixTerm {friend class SparseMatrixprivate :

int row, col, value;}In SparseMatrix:private:

int Rows, Cols, Terms;MatrixTerm smArray [MaxTerms];