Pagini recente » Cod sursa (job #1892702) | Cod sursa (job #561865) | Cod sursa (job #114177) | Cod sursa (job #2234038) | Cod sursa (job #2739260)
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
void coboara(vector<int> &v, int poz){
int fiu_dreapta, fiu_stanga;
fiu_dreapta = 2*poz+2;
fiu_stanga = 2*poz+1;
if(fiu_stanga < v.size() && v[fiu_stanga] < v[poz]){
swap(v[poz],v[fiu_stanga]);
coboara(v,fiu_stanga);
}
if(fiu_dreapta < v.size() && v[fiu_dreapta] < v[poz]){
swap(v[poz],v[fiu_dreapta]);
coboara(v,fiu_dreapta);
}
}
void heapSort(vector<int> &v){
vector<int> result;
for (int i = v.size()/2-1; i>=0; i--){
coboara(v, i);
}
int i;
int n = v.size();
for(i=0; i<n; i++){
swap(v[0],v.back());
result.push_back(v.back());
v.pop_back();
coboara(v, 0);
}
for(i=0;i<result.size();i++){
v.push_back(result[i]);
}
}
void print(vector<int> &v){
vector<int>::const_iterator i;
for(i=v.begin();i!=v.end();++i){
g<<*i<<" ";
}
g<<'\n';
}
int main(){
int length,x;
vector<int> v;
vector<int>::const_iterator i;
f>>length;
while(length>0){
f>>x;
length--;
v.push_back(x);
}
heapSort(v);
print(v);
}