پاورپوینت آرايه ها و مرتب سازي (pptx) 30 اسلاید
دسته بندی : پاورپوینت
نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
تعداد اسلاید: 30 اسلاید
قسمتی از متن PowerPoint (.pptx) :
بنام خدا
آرايه ها و مرتب سازي
ساختمان داده ها و الگوريتمها
آرايه
آرايه مجموعه اي محدود و معين از عناصر هم نوع است
مثال :,5] [1 ,2,3,4
اعضاي آرايه به صورت صريح تعريف مي شوند
آرايه با اعضاي آن به صورت کامل مشخص مي شود
تعاريف رياضي و مفهومي مانند “ مجموعه اعداد اول کوچکتر از 100” در اينجا استفاده نمي شود
اعمال روي آرايه
ساخت آرايه: شامل اختصاص حافظه به تعداد معين و از نوع معين است:
X = Create_Array(‘integer’ , 100);
دسترسي براي مقدار دهي به آرايه از طريق يک انديس و عملگر []انجام مي گيرد: x[2] = 5
خواندن مقدار آرايه هم با همين عملگر ميسر است: y = x[34]
جستجو در آرايه و مرتب سازي آن به منظور جستجوي سريعتر، مهمترين اعمال سطح بالاي آرايه هستند
مرتب سازي
مرتب سازي
براي يافتن يک عضو خاص، بايد تمام اعضاي آرايه را بازبيني کرد. براي آرايه هاي خيلي بزرگ اين کار زمان زيادي مي برد
اگر آرايه مرتب شد باشد يعني يک رابطه ترتيب مثل : for all i , j if i < j A[i]<= A[j] بين تمام اعضاي آن برقرار باشد، محدوده جستجوي لازم براي يافتن عضو مورد نظر کوچکتر مي شود.
مثال: براي يافتن عضو (3) تنها کافي است نيمه اول آرايه [1 2 3 4 5 7 9 10] را بازرسي کنيم.
معمولا مرتب سازي يکبار انجام مي گيرد و پس از آن، افزودن اعضاي جديد به آرايه با الگوريتم هايي که ترتيب را حفظ مي کنند، انجام مي شود.
الگوريتم بکار رفته براي مرتب سازي ممکن است بسيار زمانبر يا پر مصرف باشد. بنابراين سعي بر اين است که الگوريتمهايي طراحي کنيم که هزينه کمتري داشته باشند
الگوريتم طراحي شده و برنامه نوشته شده بايد :
درست باشد.
از منابع موجود به نحو مناسب استفاده كند.
با برنامه هاي ديگر بنحو مسالمت آميز اجرا شود.
پياده سازي آن راحت باشد.
يك الگوريتم مرتب سازي
void anysort(int [] A){
int N = A.length ;
int flag = 1 ;
while (flag ==1 ){
flag = 0 ;
for (int k=0 ; k < N -1 ; k ++ )
if (A[k] > A[k+1] ){
int temp = A[k] ;
A[k] = A[k+1] ;
A[k+1] = temp ;
flag = 1 ;
}
}
}
هزينه
C1
C2
C3
C4
C5
C6
C7
C8
C9
C10
تكرار
1
1
N
N
N
N(N-1)
N(N-1)
N(N-1)
N(N-1)
N(N-1)
هزينه الگوريتم
هزينه كل:
C1 +( N -1)( C2 + C3 + C4 + C5) + N(N-1) ( C6 + C7 + C8 + C9 + C10)
= a N2 + b N +c
هزينه
C1
C2
C3
C4
C5
C6
C7
C8
C9
C10
تكرار
1
1
N
N
N-1
N(N-1)
N(N-1)
N(N-1)
N(N-1)
N(N-1)
بررسي درستي الگوريتم مرتب سازي
while (flag ==1 ){
flag = 0 ;
for (int k=0 ; k < N -1 ; k ++ )
if (A[k] > A[k+1] ){
swap(A[k] , A[k+1] ) ;
flag = 1 ;
}
}
∀ k∊ [0..N -1] , A[k] >= A[k-1]
اثبات درستي
:فرض∀ k∊ [0..N -1] , A[k] >= A[k-1]
if ∃ m , n : m
A[n] then:
A[m] > A[n -1] , A[m] > A[n-2] … A[m] > A[m+1]
A[m] > A[m+1] خلاف فرض
الگوريتم درست اجرا مي شود
Bubble Sort
void anysort(int [] A){
int N = A.length ;
int flag = 1 ;
for( i=0 ; i < N ; i++ ){
for(j=N-1; j > i ; j -- ) {
if ( A[j] < A[j-1])
swap (A[j] , A[j-1] ) ;
}
}
}
هزينه
C1
C2
C3
C4
C5
C6
تكرار
1
1
N
1+2+…+N
1+2+…+N
1+2+…+N
1+2+…+ n = ½ n ( n +1 )
هزينه الگوريتم = O(N2)