Muammolarning murakkabligi va pastki baholalsh
Mavzu: Muammolarning murakkabligi va pastki baholalsh. Reja: 1. Muammolarning murakkabligi. 2. Baholash turlari. 3. Pastki baholash.
Baholash strategiyalari tomonidan ishlatiladi dasturlash tillari ikkita narsani aniqlash - funktsiya chaqiruvining argumentlarini qachon baholash va funktsiyaga qanday qiymat berish kerakligini. Tasdiqlash uchun, funktsiya ilovasi funktsiya tanasini baholashdan oldin argumentni baholashi va argumentning joriy qiymatini qidirish va uni o'zgartirish qobiliyatidan o'tishi mumkin. Tushunchasi kamaytirish strategiyasi yilda lambda hisobi o'xshash, ammo aniq. Amaliy ma'noda, C # va Java singari ko'plab zamonaviy dasturlash tillari funktsiya chaqiruvlari uchun qiymat bo'yicha qo'ng'iroq / mos yozuvlar bo'yicha baholash strategiyasiga yaqinlashdi ] Ba'zi tillar, ayniqsa pastki darajadagi tillar kabi C ++, parametrlarni uzatishning bir nechta tushunchalarini birlashtiring. Tarixiy jihatdan qadriyat bo'yicha qo'ng'iroq qiling va ism bilan qo'ng'iroq qiling ALGOL 60, 1950- yillarning oxirlarida ishlab chiqilgan. Malumot bo'yicha qo'ng'iroq tomonidan ishlatiladi PL / I va ba'zilari Fortran tizimlar. Kabi funktsional tillar Xaskell, shuningdek, faqat funktsional bo'lmagan tillar kabi R, ehtiyoj bo'yicha qo'ng'iroqdan foydalaning. Baholash strategiyasi dasturlash tili ta'rifi bilan belgilanadi va har qanday aniq bajarilish funktsiyasi emas. 1. Tanlash usuli (Selected sort) bo’yicha saralash Tanlash usuli saralash algoritmi massivni saralanmagan qismdan (o'sish tartibini hisobga olgan holda) minimal elementni bir necha bor topib, boshiga qo'yish orqali qatorni saralaydi. Algoritm berilgan massivda ikkita kichik jadvalni saqlaydi. 1) allaqachon tartiblangan ichki massiv.
2) saralanmagan qolgan ichki massiv. Tanlash tartibining har bir takrorlanishida tartiblanmagan pastki qatordan minimal element (o'sish tartibini hisobga olgan holda) tanlanadi va saralangan pastki qatorga ko'chiriladi. Quyidagi misol yuqoridagi qadamlarni tushuntiradi: #include <iostream > using namespace std; void selectionSort(int arr[], int n) { int i, j, min_idx; for (i = 0; i < n-1; i++) { min_idx = i; for (j = i+1; j < n; j++) if (arr[j] < arr[min_idx]) min_idx = j; swap(arr[min_idx], arr[i]); } } void printArray(int arr[], int size) { int i; for (i=0; i < size; i++) cout << arr[i] << " "; cout << endl; }
int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr)/sizeof(arr[0]); selectionSort(arr, n); cout << "Saralangan massiv: \n"; printArray(arr, n); return 0; } 2) Pufaksimon saralash (Bubble sort) #include <iostream> using namespace std; void bubbleSort(int arr[], int n) { int i, j; for (i = 0; i < n-1; i++) for (j = 0; j < n-i-1; j++) if (arr[j] > arr[j+1]) swap(arr[j], arr[j+1]); } void printArray(int arr[], int size) { int i; for (i = 0; i < size; i++) cout << arr[i] << " "; cout << endl;
} int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr)/sizeof(arr[0]); bubbleSort(arr, n); cout<<"Saralangan massiv: \n"; printArray(arr, n); return 0; } 3) Shaker saralashi (Cocktail Sort) #include <iostream> using namespace std; void CocktailSort(int a[], int n) { bool swapped = true; int start = 0; int end = n - 1; while (swapped) { swapped = false;