Cod sursa(job #3357266)

Utilizator CosminDMRCosmin Damureanu CosminDMR Data 7 iunie 2026 20:48:42
Problema Sortare prin comparare Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<stdlib.h>

inline void swap(int* a, int* b) {
	int aux = *a;
	*a = *b;
	*b = aux;
}

int partition(int array[], int left, int right) {
	int Pivot = array[(left + right) / 2];
	int L = left;
	int R = right;

	while (L <= R) {
		while (array[L] < Pivot)
			L++;
		while (array[R] > Pivot)
			R--;
		if (L <= R) {
			swap(&array[L], &array[R]);
			L++;
			R--;
		}
	}

	return L;
}

void quicksort(int array[], int left, int right) {
	if (left >= right)
		return;
	
	int p = partition(array, left, right);
	quicksort(array, left, p - 1);
	quicksort(array, p, right);
}

int main(int agrc, char* argv[]) {
	FILE* input = fopen("algsort.in", "r");
	if (input == NULL) exit(1);

	int n;
	fscanf(input, "%d", &n);
	int* v = (int*)malloc(n * sizeof(int));
	for (int i = 0; i < n; i++)
		fscanf(input, "%d", &v[i]);
	fclose(input);

	quicksort(v, 0, n - 1);
	
	FILE* output = fopen("algsort.out", "w");
	if (output == NULL) exit(2);
	for (int i = 0; i < n; i++)
		fprintf(output, "%d ", v[i]);
	fclose(output);

	free(v);

	return 0;
}