Pagini recente » Cod sursa (job #2470564) | Istoria paginii utilizator/misterjinx | Cod sursa (job #1009079) | Cod sursa (job #246937) | Cod sursa (job #1282568)
#include <stdio.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"
#define MAXN 500005
typedef unsigned int uint;
uint arr[ MAXN ],
n;
void read() {
uint i;
freopen(FIN, "r", stdin);
scanf("%d", &n);
for(i = 0; i < n; i++) scanf("%d", &arr[ i ]);
fclose( stdin );
};
void swap(uint *i, uint *j) {
uint temp;
temp = *i;
*i = *j;
*j = temp;
};
uint _qsort(int low, int high) {
uint i = low,
j = high,
p = arr[ ( low + high ) >> 1 ];
while(i <= j) {
while(arr[ i ] < p) i++;
while(arr[ j ] > p) j--;
if( i <= j ) swap( &arr[ i++ ], &arr[ j-- ]);
}
if(low < j) _qsort(low, j);
if(i < high) _qsort(i, high);
};
void qsort() {
_qsort(0, n - 1);
};
void write() {
uint i;
freopen(FOUT, "w", stdout);
for(i = 0; i < n; i++) printf("%d ", arr[ i ]);
fclose( stdout );
}
int main() {
read();
qsort();
write();
return(0);
};