Cod sursa(job #1040913)

Utilizator vlady1997Vlad Bucur vlady1997 Data 25 noiembrie 2013 09:26:21
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
        #include <cstdio>
        #include <cstring>
        #include <cmath>
        using namespace std;
        int a[500001];
        void swap (int i, int  j)
        {
            int x;
            x=a[i]; a[i]=a[j]; a[j]=x;
        }
        int main()
        {
            int n, i;
            freopen("algsort.in","r",stdin);
            freopen("algsort.out","w",stdout);
            scanf("%d",&n);
            for (i=1; i<=n; i++)
            {
                scanf("%d",&a[i]); bool ok=false; int x=i;
                while (ok==false)
                {
                    if (a[i/2]>=a[i]) {swap(i/2,i); i=i/2;}
                    else ok=true;
                } i=x;
            }
            for (i=1; i<n; i++)
            {
                if (a[i]>a[i+1]) {swap(i,i+1); i--;}
            }
            for (i=1; i<=n; i++) printf("%d ",a[i]);
            fclose(stdin);
            fclose(stdout);
            return 0;
        }