Pagini recente » Istoria paginii runda/getready/clasament | Cod sursa (job #1990490) | Istoria paginii runda/testac | Cod sursa (job #2445056) | Cod sursa (job #1023364)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void interclasare(int i,int m,int j,int v[])
{
int x[100],q=0,aux=m+1;
while (i<=m && aux<=j)
if (v[i]<v[aux])
x[++q]=v[i++];
else
x[++q]=v[aux++];
while(i<=m)
x[++q]=v[i++];
while (aux<=j)
x[++q]=v[aux++];
while (q)
{
v[j]=x[q];
j--;
q--;
}
}
void sortare(int i,int j,int v[])
{
if (v[i]>v[j])
swap(v[i],v[j]);
}
void di(int i,int j,int v[])
{
if (j-i<2)
sortare(i,j,v);
else
{
di(i,(i+j)/2,v);
di((i+j)/2+1,j,v);
interclasare(i,(i+j)/2,j,v);
}
}
int main()
{
int v[100],i,n;
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
di(1,n,v);
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}