1
0
forked from 131/lab4_sort

функции insert_sort и merge

This commit is contained in:
Ваше Имя
2025-11-15 04:12:54 -05:00
parent 5978caf342
commit d34b1f4339

43
sort.c
View File

@@ -83,34 +83,33 @@ _merge(int *tmp, int *a, int *b, int *end)
* Функция для слияния двух отсортированных массивов в один. * Функция для слияния двух отсортированных массивов в один.
*/ */
int *pa = a; // указатель на первый массив int a1 = 0, b1 = 0, tmp1 = 0;
int *pb = b; // указатель на второй массив int ra = b - a, rb = end - b;
int *pt = tmp; // указатель на временный массив while (ra > a1 && rb > b1)
int *end1 = b; // конец первого массива {
int *end2 = end; // конец второго массива if (a[a1] < b[b1])
{
while (pa < end1 && pb < end2) { tmp[tmp1++] = a[a1++];
if (*pa <= *pb) { }
*pt++ = *pa++; else
} else { {
*pt++ = *pb++; tmp[tmp1++] = b[b1++];
} }
} }
while (ra != a1)
while (pa < end1) { {
*pt++ = *pa++; tmp[tmp1] = a[a1];
a1++;
tmp1++;
} }
while (rb != b1)
while (pb < end2) { {
*pt++ = *pb++; tmp[tmp1] = b[b1];
} b1++;
tmp1++;
for (pt = tmp; a < end; ) {
*a++ = *pt++;
} }
} }
static void static void
_merge_sort_int(int *tmp, int *arr, size_t n) _merge_sort_int(int *tmp, int *arr, size_t n)
{ {