лістинг 6.4 | Приклад 6.4. Згладжування заданої речової матриці, робота з файлами | лістинг 6.5 | лістинг 6.6 | Хід роботи | Приклад 7.1. Передача в функцію параметрів стандартних типів | лістинг 7.1 | Приклад 7.2. Передача в функцію імені функції | лістинг 7.3 | лістинг 7.5 |

загрузка...
загрузка...
На головну

лістинг 7.7

  1. Гнучка оцінка акцій, які не включені в лістинг
  2. лістинг 1.1
  3. лістинг 1.3
  4. лістинг 1.4
  5. лістинг 1.5
  6. лістинг 1.8
  7. лістинг 10.1

include

void qsort (float * array, intleft, int right);

int main ()

{

const int n = 10;

float arr [n];

int 1, 1, r;

cout «" введіть елементи масиву: ";

for (1 = 0; i

i = o; r = n - 1; / * Ліва і права кордону початкового фрагмента * /

qsort (arr, 1, r); // 1

for (i = 0; i

return 0;

}

void qsort (float * array, int left, int right)

{

int i = left, j = right;

float middle = array [(left + right) / 2];

float temp;

while (i

{

while (array [i]

while (middle

if (i <= j)

{

temp = array [i];

array [i] = array [j];

array [j] = temp;

i ++;

j--;

}

}

if (left

if (i

}

Процедура поділу реалізована тут у вигляді рекурсивно викликається функції qsort (), в тілі якої є два звернення до самої себе: в операторі 2 - для сортування лівої половинки поточного фрагмента, і в операторі 3 - для сортування його правою половинки.

Однак, у рекурсії є і недоліки: по-перше, таку програму важче налагоджувати, оскільки потрібно контролювати глибину рекурсивного звернення, по-друге, при великій глибині стек може переповниться, а по-третє, використання рекурсії підвищує накладні витрати (наприклад, в даному випадку в стеці зберігаються аж ніяк не два числа, що представляють собою кордону фрагмента, а набагато більше, не кажучи вже про витрати, пов'язаних з викликом функції).



лістинг 7.6 | Приклад 7.8. Многофайловий проект - форматування тексту
загрузка...
© um.co.ua - учбові матеріали та реферати