Quicksort and file rearrange

This commit is contained in:
2025-04-27 18:04:47 +02:00
parent 9180586d50
commit 1c8ab00c13
19 changed files with 316 additions and 168 deletions
+53
View File
@@ -0,0 +1,53 @@
#include <stdio.h>
#include <stdlib.h>
void MergeSort(int A[], int l, int r, int B[]) {
int m = (l + r) / 2;
if (m - l > 0) {
MergeSort(A, l, m, B);
}
if (r - m > 0) {
MergeSort(A, m + 1, r, B);
}
int i = l;
int j = m + 1;
for (int k = l; k <= r; k++) {
if ((i <= m && j > r) || ((i <= m && j <= r) && A[i] <= A[j])) {
B[k] = A[i];
i++;
} else {
B[k] = A[j];
j++;
}
}
for (int k = l; k <= r; k++) {
A[k] = B[k];
}
}
int main() {
int size;
int res = scanf("%d", &size);
if (res != 1) {
fprintf(stderr, "Error reading size\n");
return 1;
}
int *arrayA = malloc(sizeof(int) * size);
for (int i = 0; i < size; i++) {
res = scanf("%d", &arrayA[i]);
if (res != 1) {
fprintf(stderr, "Error reading array element\n");
free(arrayA);
return 1;
}
}
int *arrayB = malloc(sizeof(int) * size);
MergeSort(arrayA, 0, size - 1, arrayB);
return 0;
}