پاورپوینت مجموعه داده (pptx) 28 اسلاید
دسته بندی : پاورپوینت
نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
تعداد اسلاید: 28 اسلاید
قسمتی از متن PowerPoint (.pptx) :
Data Structures(… and their analysis)
Computational Complexiy
int naive_multiply(int x, int y)
{
if (y == 0) return 0;
if (y == 1) return x;
if ((y % 2) == 0)
return naive_multiply(x,y/2) + naive_multiply(x,y/2);
return x + naive_multiply(x,y/2) + naive_multiply(x,y/2);
}
Computational Complexity
تعداد زير مسائل :
2 a=2
اندازه زير مسائل:
½ b=2
کار تکرار فعلي : ثابت (حداکثر 8 )
)3 ==, 1 %, 2 /, 2 +) k = 0
a vs b^k 2 vs 2 ^ 0 2 vs 1 a > b^k
O(n^(log b a)=n^(log 2 2) = n^1) O(n)
Computational Complexiy
int multiply(int x, int y)
{
if (y == 0) return 0;
if (y == 1) return x;
int value = multiply(x,y/2);
if ((y % 2) == 0) return value + value;
return x + value + value;
}
Computational Complexity
تعداد زير مسائل :
1 a=1
اندازه زير مسائل:
½ b=2
کار تکرار فعلي : ثابت (حداکثر 8 )
3 ==, 1 %, 2 /, 2 +) k = 0
a vs b^k 1vs 2 ^ 0 1 vs 1 a == b^k
O(n^k lg n = n^0 lg n = lg n) O(lg n)
Templates
راه حل معمول در نوشتن توابع: کار روي يک نوع داده
void sort(int *a, int size)
{
for (int index = 0; index < size; index++)
{
int j = index;
for (int k = index + 1; k < size; k++) // for each position in array
{
if (a[k] < a[j]) {j = k;} // find the smallest
int temp = a[index]; a[index] = a[j]; a[j] = temp;
// switch into appropriate place (first, second, third…)
}}
}
Templates
اگر مي خواستيم ليستي از انواع داده زير را مرتب کنيم، چکار کنيم؟
دوبل
رشته
کاراکتر
مستطيل
تابع را با پارامترهاي جديد بازنويسي کنيد.
يک الگوريتم و چند نوع داده
براي برنامه نويس راحت نيست.
سايز کد بزرگتر است.
خوانايي برنامه کمتر است.
Templates
توابع الگو:
اجازه مي دهند از انواع اختياري در برنامه استفاده کنيم.
راه کار:
به اول تعريف تابع template
را اضافه کنيد.
تمام قسمتهايي که از نوع داده مورد نظر استفاده مي کنند، را به طور مناسب با Typeعوض کنيد.
Templates: Example
template
void sort(Type *a, int size)
{
for (int index = 0; index < size; index++)
{
int j = index;
for (int k = index + 1; k < size; k++) // for each position in array
{
if (a[k] < a[j]) {j = k;} // find the smallest
Type temp = a[index]; a[index] = a[j]; a[j] = temp;
// switch into appropriate place (first, second, third…)
}}
}