Pagini recente » Cod sursa (job #2235776) | Cod sursa (job #2855802) | Cod sursa (job #2262604) | Cod sursa (job #2108277) | Cod sursa (job #2897370)
#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();
//
//
//
//
//}
// quick sort
int N, v[500000];
int impartire(int st,int dr){
int pivot = v[st];
int nr= 0;
for (int i= st+ 1; i<= dr ; i++){
if(v[i]<= pivot) nr++;
}
int i_pivot= st+ nr;
int a= v[1];
v[1]= v[i_pivot];
v[i_pivot]= a;
int i= st;
int j= dr;
while(i< i_pivot && j> i_pivot){
while (v[i]<= pivot){
i++;
}
while(v[i]> pivot){
j--;
}
while(i< i_pivot && j> i_pivot){
i++;
j--;
a= v[i];
v[i]= v[j];
v[j]= a;
}}}
void quickSort( int st, int dr){
if(st>= dr) return;
int p =impartire(st, dr);
quickSort(st, p - 1);
quickSort( p + 1, dr);
}
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>N;
for (int i =0; i< N; i++){
f>>v[i];
}
quickSort(0, N-1 );
for(int i=0; i<N; i++){
g<< v[i]<<" ";
}
}