Pagini recente » Cod sursa (job #1971485) | Cod sursa (job #2437372) | Cod sursa (job #2839884) | Cod sursa (job #2285612) | Cod sursa (job #2897348)
#include <iostream>
#include <fstream>
using namespace std;
// ex 1
int N, v[500000], aux[500000];
void intercl(int st, int dr, int m){
int it_1= st;
int it_2= m+ 1;
int nr=0;
while(it_1<= m && it_2<= dr ){
if(v[it_1]< v[it_2] ){
aux[nr]= v[it_1];
nr++;
it_1++;
}
else {
aux[nr]= v[it_2];
it_2++;
nr++;
}
}
for (int i= it_1; i<=m; i++){
aux[nr]= v[i];
nr++;
}
for (int i= it_2; i<= dr; i++){
aux[nr]= v[i];
nr ++;
}
for(int i= st; i<= dr ;i++ ){
v[i]= aux[i- st];
}
};
void merge_sort(int st, int dr){
int mij;
if(st== dr) return ;
mij=(st+ dr)/ 2;
merge_sort(st, mij);
merge_sort(mij+1, dr);
intercl(st, dr, mij);
}
int main() {
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>N;
for (int i =0; i< N; i++){
f>>v[i];
}
merge_sort(0, N- 1);
for (int i=0; i<N;i++){
g<<v[i]<<" ";
}
f.close();
g.close();
}
//int N, A, B, C;
//int main(){
// ifstream f("radixsort.in");
// ofstream g("radixsort.out");
// f>> N>> A>>B>>C;
//}