Как понять алгоритм сортировки слиянием (рекурсивный) - PullRequest
0 голосов
/ 01 апреля 2020
int sort(int a[],int n)
{
     int h;
     int b[n];
     h=n/2
     //copy a[] to b[]
     sort(b,n)
     sort(b+h, n-h)
     //merge two halves in b to a
     return;
}

В этом коде, как я могу понять часть сортировки (b, h), сортировки (b + h, nh). что это значит (б + ч) ??

1 Ответ

0 голосов
/ 01 апреля 2020

Массивы могут распадаться на указатель на первый элемент. Фактически, когда вы передаете массив функции, не передавая его по ссылке, вы фактически передаете указатель на первый элемент.

В выражении b + h, b распадается на указатель на первый элемент, и b + h - это арифметика указателя c, в результате которой указатель указывает на элемент с индексом h. sort(b, h) сортирует первые h элементы, начиная с элемента, на который указывает b, который является первой половиной массива. sort(b + h, n - h) сортирует элементы n - h, начиная с элемента, на который указывает b + h, то есть вторая половина массива.

...