Форум программистов, компьютерный форум CyberForum.ru

Комментарии - C++

Восстановить пароль Регистрация
 
Kolox
Сообщений: n/a
17.05.2011, 22:14     Комментарии #1
Добрый вечер.
В интернете нашел код сортировки слиянием.Сам смог разобрать только int main().
Напишите пожалуйста комментарии к int merge и int mergeSort.
P.S. я только начал знакомство с программирование.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
using namespace std;
int merge(int *, int  , int);            
int mergeSort (int *, int , int);      
int main()
{
        setlocale (0,"Russian");
        int *a;                         
        int i;                             
        int n=100;
        a = (int*) malloc ( n*sizeof(int) );
        for ( i = 0; i < n; i++ )              
        {
                *(a+i)=rand()/99;        
                        printf( "%i ", *(a+i) );
        }
        printf("\n");
        printf( "\nОтсортированный массив\n" );    
        *a=mergeSort(a, 0, n-1);
        for ( i=0; i < n; i++ )            
        {
                printf( "%i ", *(a+i) );   
        }
        return 0;
}
 
 
int merge (int *arr, int a, int split, int b)
{
  int pos1 = a;                      
  int pos2 = split + 1;              
  int pos3 = 0;
  int *temp;
  temp = (int*) malloc ( ( b-a+1 ) *sizeof(int) );    
 
  while (pos1 <= split && pos2 <= b)                    
 {
         if ( *(arr + pos1) < *(arr + pos2) )       
         {
                  *( temp+pos3 ) = *( arr+pos1 ); 
                  pos3++;             
                  pos1++;             
         }
         else
         {
                *( temp+pos3 ) = *( arr+pos2 );    
                pos3++;
                pos2++;
         }
 }
 
  while ( pos2 <= b ) 
  {
                *( temp+pos3 ) = *( arr+pos2 );
                pos3++;
                pos2++;
  }
 
  while ( pos1 <= split ) 
  {
                *( temp+pos3 ) = *( arr+pos1 );
                pos3++;
                pos1++;
  }
 
  for ( pos3 = 0; pos3 < b-a+1; pos3++ ) *( arr + a + pos3) = *( temp + pos3 );       
free(temp);    
return *arr;    
}
 
int mergeSort(int *arr, int a, int b) 
{
  int split;
  if (a < b)
  {
        split = (a + b)/2;
        mergeSort (arr, a, split);
        mergeSort (arr, split+1, b);
        merge (arr, a, split, b);
  }
return *arr;
}
Надеюсь на помощь.

Добавлено через 1 час 42 минуты
Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 22:14     Комментарии
Посмотрите здесь:

Удалить из строки комментарии вида '/* ... */". Игнорировать вложенные комментарии. C++
Комментарии C++
C++ Комментарии
C++ Комментарии
C++ Комментарии
Комментарии C++
Удалить из строки комментарии вида '/* . */". Игнорировать вложенные комментарии C++
Комментарии C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
17.05.2011, 23:06     Комментарии #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
int mergeSort(int *arr, int a, int b) 
{
  int split;
  if (a < b)
  {
        split = (a + b)/2;
        mergeSort (arr, a, split);
        mergeSort (arr, split+1, b);
        merge (arr, a, split, b);
  }
return *arr;
}
Это рекурсивная процедура.
Вычисляется середина массива, потом рекурсивно она вызывается для левой и правой половины массива. После возврата из обоих вызовов выполняется слияние отсортированных половинок массива.
Yandex
Объявления
17.05.2011, 23:06     Комментарии
Ответ Создать тему
Опции темы

Текущее время: 21:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru