Pagini recente » Cod sursa (job #1173095) | Cod sursa (job #2422642) | Cod sursa (job #2827446) | Cod sursa (job #2182385) | Cod sursa (job #2608221)
#include <fstream>
#include <cstdlib>
std::ifstream cin ("algsort.in");
std::ofstream cout("algsort.out");
bool sorted(int * a, int n){
for (int i = 0; i < n - 1; i ++)
if (a[i] > a[i + 1])
return false;
return true;
}
void quicksort(int *v, int i, int j){
if (j - i <= 10){
for (int a = i; a < j; a ++)
for (int b = a + 1; b <= j; b ++)
if (v[a] > v[b])
std::swap(v[a],v[b]);
return;
}
int mijloc = i + (j - i)/2;
int pivot = v[mijloc];
int sup = j, inf = i;
while (i <= j){
while (i < sup && v[i] <= pivot)
i ++;
while (j > inf && v[j] > pivot)
j --;
if (i <= j){
std::swap(v[i],v[j]);
i ++;
j --;
}
}
if (i < sup)
quicksort(v,i,sup);
if (j > inf)
quicksort(v,inf,j);
}
int main()
{
int n;
cin >> n;
int *v;
v = new int [n];
for (int i = 0; i < n; i ++)
cin >> v[i];
if (!sorted(v,n))
quicksort(v,0,n-1);
for (int i = 0; i < n; i ++)
cout << v[i] << " ";
cin.close();
cout.close();
return 0;
}