Пояснить сортировку слиянием - 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 элементов методом
сортировка слиянием. - Выводим отсортированный массив на экран.