Pagini recente » Cod sursa (job #1232975) | Cod sursa (job #395773) | Cod sursa (job #457474) | Cod sursa (job #1074436) | Cod sursa (job #3031014)
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
#include <ctime>
#include <ratio>
#include <chrono>
#include <fstream>
using namespace std;
//int medianOf3(vector<int> Vector, int left, int right) {
// int mid = (left + right) / 2;
//
// if (Vector[left] > Vector[mid])
// swap(Vector[left], Vector[mid]);
//
// if (Vector[mid] > Vector[right])
// swap(Vector[mid], Vector[right]);
//
// if (Vector[left] > Vector[right])
// swap(Vector[left], Vector[right]);
//
//
// swap(Vector[mid], Vector[right-1]);
// return Vector[right - 1];
//}
//int part2(vector<int>& Vector, int left, int right){
// int pivot = medianOf3(Vector, left, right), j = left-1;
// for(int i=left;i<=right;i++) {
// if (Vector[i] <= pivot) {
// swap(Vector[j++], Vector[i]);
// }
// }
//
// for(int i=left;i<=right;i++) {
// if (Vector[j] == pivot){
// swap(Vector[j+1], Vector[i]);
// j += 1;
// }
// }
// return j;
//}
//void quicksort2(vector<int>& Vector, int left, int right){
// if (left<right){
// int index = part2(Vector, left, right);
//
// quicksort(Vector, index+1, right);
// quicksort(Vector, left, index-1);
// }
//}
vector<int> sort2(vector<int> left, vector<int> right){
int li = 0, ri = 0;
vector<int> V = {};
int ls = left.size(), rs = right.size();
while(ls > li && rs > ri){
if(left[li] < right[ri]){
V.push_back(left[li]);
li++;
} else {
V.push_back(right[ri]);
ri++;
}
}
for(int i=li; i<ls; i++){
V.push_back(left[i]);
}
for(int i=ri; i<rs; i++){
V.push_back(right[i]);
}
return V;
}
vector<int> sortare(vector<int> Vector){
if(Vector.size() == 1){
return Vector;
}
int mid = Vector.size()/2;
vector<int> left, right;
left = {};
right = {};
for(int i=0; i<mid; i++){
left.push_back(Vector[i]);
}
for(int i=mid; i<Vector.size(); i++){
right.push_back(Vector[i]);
}
return sort2(sortare(left), sortare(right));
}
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
vector<int> V;
int a, N;
f>>N;
while(N>0){
f>>a;
V.push_back(a);
N--;
}
V = sortare(V);
for(long unsigned int i=0; i<V.size(); i++){
g<<V[i]<<" ";
}
return 0;
}