1
0
forked from 131/lab4_sort

функции insert_sort и merge

This commit is contained in:
Ваше Имя
2025-11-08 04:34:23 -05:00
parent 2802f365dc
commit 5978caf342

43
sort.c
View File

@@ -22,6 +22,16 @@ void
insert_sort(int *arr, size_t sz)
{
// <YOURCODE>
int i, j;
for (i = 1; i < sz; i++) {
int key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
void
@@ -64,12 +74,43 @@ bubble_sort(int *arr, size_t sz)
| 1 | 2 | 3 | 4 | 5 | 6 |
*/
static void
_merge(int *tmp, int *a, int *b, int *end)
{
// <YOURCODE>
// <YOURCODE>
/*
* Функция для слияния двух отсортированных массивов в один.
*/
int *pa = a; // указатель на первый массив
int *pb = b; // указатель на второй массив
int *pt = tmp; // указатель на временный массив
int *end1 = b; // конец первого массива
int *end2 = end; // конец второго массива
while (pa < end1 && pb < end2) {
if (*pa <= *pb) {
*pt++ = *pa++;
} else {
*pt++ = *pb++;
}
}
while (pa < end1) {
*pt++ = *pa++;
}
while (pb < end2) {
*pt++ = *pb++;
}
for (pt = tmp; a < end; ) {
*a++ = *pt++;
}
}
static void
_merge_sort_int(int *tmp, int *arr, size_t n)
{