آموزش ساختمان داده ها - بخش سوم
Transcript of آموزش ساختمان داده ها - بخش سوم
![Page 1: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/1.jpg)
ساختمان داده ها
faradars.org/fvsd9402
:مدرسفرشید شیرافکن
دانشگاه تهران دانشجوی دکتری (بیو انفورماتیک: دکتری( )کامپیوتر نرم افزار: کارشناسی و کارشناسی ارشد )
آرایه
1
فرادرس
FaraDars.org
![Page 2: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/2.jpg)
ساختمان داده ها
faradars.org/fvds9402
تعریف آرایه
2
انديسازآنعنصرهربهدسترسيبرايوشدهمعرفيناميکتحتکهاستنوعهمدادههايازمجموعهايآرايه.ميشوداستفادهمشخصي
int a[10];
فرادرس
FaraDars.org
![Page 3: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/3.jpg)
ساختمان داده ها
faradars.org/fvds9402
آرایه دو بعدی
3
int balances[11][6]; فرادرس
FaraDars.org
![Page 4: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/4.jpg)
ساختمان داده ها
faradars.org/fvds9402
بعدی3آرایه
4
int c [3][4][5];
فرادرس
FaraDars.org
![Page 5: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/5.jpg)
ساختمان داده ها
faradars.org/fvds9402
نحوهذخیرهعناصرآرايهدرحافظه
آرايهرعناصبهدسترسيسرعتشدنسريعموجبکهگیرندميقرارهمسرپشتصورتبهحافظهدرآرايهعناصرفضابايتwاندازهبهآرايهعنصرهروشودذخیرهحافظهآلفاآدرسدرآرايهاولعنصراينکهفرضبا.شودمي
هبآرايهعناصرکهشدهفرض.شودميمحاسبهزيرروابطکمکبهحافظهدرآرايهعنصرهرمحلنمايد،اشغال:استشدهذخیرهحافظهدرسطربهسطرصورت
5
wljlulijixloc )]()1()[(:]),[( 2221
wlkluljlululi
kjixloc
)]()1()()1()1()[(
:]),,[(
333233221
wliixloc )(:])[(
]..,..[ 2211 ululx
]..,..,..[ 332211 ulululx
]..[ ulx
فرادرس
FaraDars.org
![Page 6: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/6.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
.کنیدمحاسبهراA[3][4]آرايهدرA[1][2]عنصرآدرس:فرض.استبايتي8دادهنوعازآرايهعناصر
.است10آرايهشروعآدرس
:حل
.باشدA[0..2][0..3]صورتبههاانديسمحدوده
6
588)]02(4)01[(10
wljluli )]()1()[( 2221
فرادرس
FaraDars.org
![Page 7: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/7.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
A[3][4]
7
588)]02(4)01[(10
3210
0
1
2
فرادرس
FaraDars.org
![Page 8: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/8.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
.کنیدمحاسبهراA[20][10][5]آرايهدرA[3][4][2]عنصرآدرس:فرض.استبايتي2دادهنوعازآرايهعناصر
.استصفرآرايهشروعآدرس
:حل
.باشدA[0..19][0..9][0..4]صورتبههاانديسمحدوده
8
3442]220150[0
2)]02(5)04(510)03[(0
wlkluljlululi )]()1()()1()1()[( 333233221
فرادرس
FaraDars.org
![Page 9: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/9.jpg)
ساختمان داده ها
faradars.org/fvds9402
آرایهجستجوی خطی در
،کردنپیداصورتدر.مينمايدجستجوآرايه،عناصرتکتکبامقايسهروشبه،aعنصريnآرايهدرراxمقدارزيرتابع.گرداندميبررا1-عددنکردن،پیداصورتدروxحاويخانهانديس
seqsearch (a[ ] , n , x )
{
for ( i = 0 ; i <=n-1 ; i++ )
if (a[i] == x)
return i ;
return -1 ;
}
.بودخواهدO(n)عملمقايسهداريمکهدرنتیجهزمانآنn+1دريکجستجويناموفقنیازبه
9
فرادرس
FaraDars.org
![Page 10: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/10.jpg)
ساختمان داده ها
faradars.org/fvds9402 جستجوی دودویی
شود،ميمقايسهآرايهوسطعنصرباجستجوموردعنصرباشد،شدهمرتبصعوديطوربهآرايهاينکهفرضبا.استشدهپیدابودن،برابرصورتدرگیردميانجامآرايهبااليينیمهدربازگشتيطوربهمقايسهباشد،بزرگترآرايهوسطعنصرازاگراينصورت،غیردر.شودميانجامآرايهپايینينیمهدربازگشتيطوربهمقايسهوسط،عنصرازبودنکوچکترصورتدرو
10
فرادرس
FaraDars.org
![Page 11: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/11.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
:مرتبآرايهدر12عددکردنپیدا:مثال
.35يعنيx[1..9]وسطعنصربا12مقايسه-1
.9يعنيx[1..4]وسطعنصربا12مقايسه-2
.12يعنيx[3..4]وسطعنصربا12مقايسه-3
.کرديمپیدارا12عددمقايسه3بابنابراين
11
1 2 3 4 5 6 7 8 9
5 9 12 20 35 50 82 88 97
5 9 12 20 35 50 82 88 97
5 9 12 20 35 50 82 88 97
5 9 12 20 35 50 82 88 97
فرادرس
FaraDars.org
![Page 12: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/12.jpg)
ساختمان داده ها
faradars.org/fvds9402
تابع جستجوی دودویی
آرايهدرراآنانديسکند،پیداراxاگر.مينمايدجستجودودويي،روشبه،Aمرتبعنصريnآرايهدرراxمقدارزيرتابعlow=0):ابتدادر).گرداندميبررا1-عددنکردن،پیداصورتدروگرداندميبر , high=n-1
bsearch(a[ ] , x , low , high){while (low <= high)
{
mid = (low + high) / 2 ;if ( x < a[mid] )
high = mid-1 ;else
if ( x > a[mid] )
low = mid+1 ; else return mid ;
}return -1 ;
}12
فرادرس
FaraDars.org
![Page 13: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/13.jpg)
ساختمان داده ها
faradars.org/fvds9402
( بازگشتی)جستجوی دودویی
bsearch (a[ ] , x , low , high ){
if (low <=high ) {
mid = ( low+high ) / 2;
if ( x < a[mid] )bsearch( a , x , low , mid-1 );
else if ( x > a[mid] )bsearch (a , x , mid+1 , high );
else
return mid;}
return -1; }:مرتبه:جوابرابطه:بازگشتيرابطه
13
1)2
()( n
TnT)(lgnO 1lg n
فرادرس
FaraDars.org
![Page 14: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/14.jpg)
ساختمان داده ها
faradars.org/fvds9402
جستجويدودويي
:آرايهيکدردودوييجستجويروشبهعنصريکردنپیدابرايهامقايسهتعدادحداکثر10:عنصرهزاربا
14:عنصرهزاردهبا
17:عنصرهزارصدبا
20:عنصرمیلیونيکبا
.دهدمينشانراخودبیشترزياد،عناصرتعدادباآرايهدر،خطيجستجويبهدودوييجستجويبرتريبنابراين
14
highmid+1midmid-1low
…… فرادرس
FaraDars.org
![Page 15: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/15.jpg)
ساختمان داده ها
faradars.org/fvds9402
آرايهدرجدر
.اضافهميکند،aآرايهامkرادرمکانx،مقدارinsertتابع
(m<n):آنپراستعنصرmخانهاستکهnدارايaفرضشدهکهآرايه
X=‘A’,k=0,n=7,m=5:مثال
insert (a[ ] , m , k , x)
{
for ( i = m-1 ; i >= k ; i-- )
a[i+1] = a[i];
a[k] = x;
}
:شیفتموردنیازتعداد
15
km
فرادرس
FaraDars.org
![Page 16: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/16.jpg)
ساختمان داده ها
faradars.org/fvds9402
حذفازآرايه
(k<=n).ميدهدقرارxمتغیردرراآنوکردهحذفراaآرايهعنصرامینkزيرتابع
delete( a[ ] , n , k , x )
{
x = a[k];
for ( i = k ; i<n ; i++ )
a[i] = a[i+1];
a[i] = 0;
return(x);
}
16
فرادرس
FaraDars.org
![Page 17: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/17.jpg)
ساختمان داده ها
faradars.org/fvds9402
ماتريس
:ازعبارتندمعروفهايماتريساسپارسماتريس-1
(مثلثيباالومثلثيپايین)مثلثيماتريس-2
(...وقطريپنج،قطريسه)قطريماتريس-3
17
فرادرس
FaraDars.org
![Page 18: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/18.jpg)
ساختمان داده ها
faradars.org/fvds9402
(خلوت)ماتریس اسپارس
.نامندمي(تنکياخلوت)اسپارسماتريسراباشدصفرعنصرزيادينسبتاتعداددارايکهماتريسي
.ميشوندذخیرهماتريسغیرصفرعناصرفقطاجرا،زمانومصرفيحافظهکاهشبرايماتريس،ايندر
:مثال
18
5
2
2
2
3
4
2
1
3
0
0
0
0
0
2
0
5
0
0
0
0 فرادرس
FaraDars.org
![Page 19: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/19.jpg)
ساختمان داده ها
faradars.org/fvds9402
ماتریس پایین مثلثی
غیرعناصرفقطس،ماترياينذخیرهبراي.گويندميمثلثيپايینماتريسراباشدصفرآناصليقطربااليعناصرتمامکهماتريسي.شوندميذخیرهصفر:مثال
:شودميذخیرهزيرآدرسدرمثلثيماتريسjستونوiسطردرواقععنصر
19
1
0
0
4
6
0
5
3
2a a+1 a+2 a+3 a+4 a+5
2 3 6 5 4 1
12
)1(
j
iia
فرادرس
FaraDars.org
![Page 20: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/20.jpg)
ساختمان داده ها
faradars.org/fvds9402
قطری3ماتریس
ظاهراصليقطرپائینوباالبالفاصلهواصليقطررويآنصفرغیرهايدرايهکهباشدميمربعيماتريسيکقطريسهماتريس.باشدميبرابرماتريسايندرصفرغیرعناصرتعداد.شوندمي:مثال
:شودميذخیرهزيرحافظهآدرسدرمثلثيپايینماتريسjستونوiسطردرواقععنصر
20
5
83
0
0
9
4
7
0
0
2
3
23
0
0
1
6
a+9a+8a+7a+6a+5a+4a+3a+2a+1a
598342731236
32 jia
فرادرس
FaraDars.org
![Page 21: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/21.jpg)
ساختمان داده ها
faradars.org/fvds9402
تمرین
ستونيصورتبهراصفرغیرعناصراگر.هستندصفربرابرآناصليقطرپايینعناصرکهاستمربعيماتريسمثلثيباالماتريس-1.کنیدمشخصراحافظهدرماتريساينjستونوiسطردرواقععنصرذخیرهمحلکنیم،ذخیرهحافظهدر
تصوربهراصفرغیرعناصراگر.هستندصفربرابرآناصليقطربااليعناصرکهاستمربعيماتريسمثلثيپايینماتريس-2مشخصراحافظهدرماتريساينjستونوiسطردرواقععنصرذخیرهمحلکنیم،ذخیرهحافظهدراصليقطرازشروعباقطري.کنید
ربرابعناصرسايرآن،پايینقطردووآنبااليقطردوواصليقطرعناصرجزبهکهاستمربعيماتريسقطريپنجماتريس-3اينjستونوiسطردرواقععنصرذخیرهمحلنمايیم،ذخیرهحافظهدرسطريصورتبهراصفرغیرعناصراگر.باشندميصفر
.کنیدمشخصراحافظهدرماتريس
21
فرادرس
FaraDars.org
![Page 22: آموزش ساختمان داده ها - بخش سوم](https://reader038.fdocuments.net/reader038/viewer/2022103021/55d2aa2fbb61ebec3a8b4585/html5/thumbnails/22.jpg)
ساختمان داده ها
faradars.org/fvds9402
22
این اسالید ها بر مبنای نکات مطرح شده در فرادرس« مجموعه فرادرس های ساختمان داده ها»
.تهیه شده است
.نماییدلینک زیر مراجعه برای کسب اطالعات بیشتر در مورد این آموزش به
faradars.org/fvds9402
فرادرس
FaraDars.org