Pagini recente » Cod sursa (job #2828251) | Cod sursa (job #2705290) | Cod sursa (job #3328915) | Cod sursa (job #2661086) | Cod sursa (job #3357266)
#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;
}