Pagini recente » Cod sursa (job #1413391) | Cod sursa (job #278951) | Cod sursa (job #962909) | Cod sursa (job #12467) | Cod sursa (job #484240)
Cod sursa(job #484240)
#include<stdio.h>
#include<stdlib.h>
#define BUFFER_SIZE 8192
#include<algorithm>
#define Nmax 503030
int N,x;
using namespace std;
struct nod
{
int val;
nod *st,*dr;
} *bst,*NIL;
char buff[BUFFER_SIZE];
int buffIt;
FILE *inputFile = fopen("algsort.in", "r");
inline int getNumber() {
int ret = 0;
while (buff[buffIt] < '0' || buff[buffIt] > '9')
if (++buffIt == BUFFER_SIZE)
fread(buff, BUFFER_SIZE, 1, inputFile),
buffIt = 0;
while (buff[buffIt] >= '0' && buff[buffIt] <= '9') {
ret = ret * 10 + buff[buffIt] - '0';
if (++buffIt == BUFFER_SIZE) {
buffIt = 0;
fread(buff, BUFFER_SIZE, 1, inputFile);
}
}
return ret;
}
typedef struct nod nod;
int v[Nmax];
nod* insert(nod* &p,int k)
{
if (p == NIL)
{ nod* a=new nod;
p=a;
p->val = k,p->st = p->dr = NIL;
return p;
}
if(p->val < k)
{
return insert(p->dr,k);
}
else
{
return insert(p->st,k);
}
}
void parcurge(nod *p)
{
if(p==NULL)
return;
parcurge(p->st);
printf("%d ",p->val);
parcurge(p->dr);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
N=getNumber();
for(int i=1;i<=N;++i)
{
v[i]=getNumber();
}
random_shuffle(v+1,v+N+1);
random_shuffle(v+1,v+N+1);
// random_shuffle(v+1,v+N+1);
for(int i=1;i<=N;++i)
{
insert(bst,v[i]);
}
parcurge(bst);
}