Пояснить сортировку слиянием - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Что выполняет???мне нужн ответ... +можете написать обозначение функции(если сможете) ( //-? ) ------------------------------------------------------------ 1).Что выполняет?
for ( i=0; i < n; i++ )        //-?
    {
        printf( "%i ", *(a+i) );          //-?
    }
2).Что выполняет?
while (pos1 <= split && pos2 <= b)        //-?
------------------------------------------------------------ 3).Что выполняет?
if ( *(arr + pos1) < *(arr + pos2) )                //-?
------------------------------------------------------------ 4). Что выполняет?
while ( pos2 <= b )          //-?
  {
        *( temp+pos3 ) = *( arr+pos2 );        //-?
        pos3++;
        pos2++;
 
  }
------------------------------------------------------------- 5).Что выполн.?
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]);
 
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с консолью, вводом-выводом и генерацией случайных чисел, а также для работы со временем.
  2. Объявляем массив x размером 11 и функцию swap для обмена значениями двух указателей.
  3. Реализуем две вспомогательные функции: SiftUp и SiftDown для сортировки массива методом сортировка слиянием.
  4. В функции main создаем случайные значения для элементов массива x с помощью функции rand().
  5. Выводим исходный массив на экран.
  6. Сортируем массив методом сортировка слиянием, используя функции SiftUp и SiftDown.
  7. Меняем местами первый и последний элементы массива и снова сортируем полу-массив из 9 элементов методом сортировка слиянием.
  8. Выводим отсортированный массив на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы