Pagini recente » Cod sursa (job #1738145) | Cod sursa (job #2032089) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #350069)
Cod sursa(job #350069)
#include <fstream>
#include <list>
#include <vector>
using namespace std;
void sort(vector<int>& v,int p=1,int u=1){
if(p>=v.size()) return;
sort(v,(p+u)*2+5,p+2);
for(int pasi=0;pasi<p;pasi++){
for(int i=p+pasi;i<v.size();i+=p){
if(v[i]<v[i-p]){
//cautarea aia binara
int a=pasi,b=i-p,m;
while(a!=b){
m=(b-a)/p/2*p+a;
if(v[m]<v[i]){
a=m+p;
}else{
b=m;
}
}
//si inserarea lui
for(;a<i;a+=p){
swap(v[a],v[i]);
}
}
}
}
}
int main(){
ifstream in("algsort.in");
ofstream out("algsort.out");
int n;in>>n;
vector<int> v;
for(int i=0;i<n;i++){
int t;in>>t;v.push_back(t);
}
sort(v);
for(typeof(v.begin()) it=v.begin();it!=v.end();it++){
out<<*it<<" ";
}
}