Pagini recente » Cod sursa (job #450439) | Cod sursa (job #600891) | Cod sursa (job #2988512) | Cod sursa (job #600848) | Cod sursa (job #2897334)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n;
int v[500005];
void interclasare(int st, int mid, int dr){
int i, j, aux[500005], k = 0;
i = st, j = mid + 1;
while (i <= mid && j <= dr){
if (v[i] < v[j]){
aux[++k] = v[i++];
}
else{
aux[++k] = v[j++];
}
}
for (; i<=mid; i++){
aux[++k] = v[i];
}
for (; j<=dr; j++){
aux[++k] = v[j];
}
for (i=st; i<=dr; i++){
v[i] = aux[i-st+1];
}
}
void mergeSort(int st, int dr){
int mid = (st + dr)/2;
if (st < dr){
mergeSort(st, mid);
mergeSort(mid+1, dr);
interclasare(st, mid, dr);
}
}
int main(){
fin >> n;
for (int i=1; i<=n; i++){
fin >> v[i];
}
mergeSort(1, n);
for (int i=1; i<=n; i++){
fout << v[i] << ' ';
}
return 0;
}