Пояснить сортировку слиянием - C (СИ)
Формулировка задачи:
Что выполняет???мне нужн ответ...
+можете написать обозначение функции(если сможете) ( //-? )
------------------------------------------------------------
1).Что выполняет?
2).Что выполняет?
------------------------------------------------------------
3).Что выполняет?
------------------------------------------------------------
4). Что выполняет?
-------------------------------------------------------------
5).Что выполн.?
-------------------------------------------------------------
спс заранее
for ( i=0; i < n; i++ ) //-? { printf( "%i ", *(a+i) ); //-? }
while (pos1 <= split && pos2 <= b) //-?
if ( *(arr + pos1) < *(arr + pos2) ) //-?
while ( pos2 <= b ) //-? { *( temp+pos3 ) = *( arr+pos2 ); //-? pos3++; pos2++; }
for ( pos3 = 0; pos3 < b-a+1; pos3++ ) *( arr + a + pos3) = *( temp + pos3 ); //-?
Решение задачи: «Пояснить сортировку слиянием»
textual
Листинг программы
#include<conio.h> #include <stdio.h> #include <stdlib.h> #include <time.h>// Что выполняет? int x[11]; void swap(int *a, int *b) { int temp=*a; *a=*b; *b=temp; } void SiftUp(int n) { int i = n , p ; // р - для чего нужна переменная? while ( i <1) { p = i /2; if ( x [ p ]>= x [ i ]) break ; swap(&x[p], &x[i]); i = p ; } } void SiftDown(int n) { int i=1,c; while (( c =2* i )<= n ) // что выполняют операторы? { if (( c +1)<= n ) // что выполняют операторы? if ( x [ c +1]< x [ c ]) c = c +1; // зачем? if(x[i]<=x[c]) break; swap (& x [ c ],& x [ i ]); i=c; } } main() { int i; for(i=1; i<=10; i++) // что выполняет? x[i]=rand(); printf("\n Do sortirovki :\n"); for(i=1; i<=10; i++) printf("%d ",x[i]); for(i=2; i<=10; i++) SiftUp(i); for(i=10; i>=2; i--) { swap(&x[1], &x[i]); //В чем смысл вызова этой функции в этом месте программы SiftUp(i-1); } printf("\n Posle sortirovki :\n"); for(i=1; i<=10; i++) printf("%d ",x[i]); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с консолью, вводом-выводом и генерацией случайных чисел, а также для работы со временем.
- Объявляем массив x размером 11 и функцию swap для обмена значениями двух указателей.
- Реализуем две вспомогательные функции: SiftUp и SiftDown для сортировки массива методом
сортировка слиянием
. - В функции main создаем случайные значения для элементов массива x с помощью функции rand().
- Выводим исходный массив на экран.
- Сортируем массив методом
сортировка слиянием
, используя функции SiftUp и SiftDown. - Меняем местами первый и последний элементы массива и снова сортируем полу-массив из 9 элементов методом
сортировка слиянием
. - Выводим отсортированный массив на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д