Friday, November 2, 2012

Brick Sort


#include <iostream>
using namespace std;
#define siz 1000000
int a[siz];

void swap(int a[], int i, int j){
    int temp=a[i];
    a[i]=a[j];
    a[j]=temp;
}

void brickSort(int a[], int n){
    bool sorted=false;
    while(sorted!=true){
        sorted=true;
        for(int i=1;i<n-1;i+=2){
            if(a[i]>a[i+1]){
                swap(a,i,i+1);
                sorted=false;
            }
        }

        for(int i=0;i<n-1;i+=2){
            if(a[i]>a[i+1]){
                swap(a,i,i+1);
                sorted=false;
            }
        }
    }
    for(int i=0;i<n;i++) cout<<a[i]<<endl;
}

int main()
{
    int n;
    while(cin>>n){
        for(int i=0;i<n;i++) cin>>a[i];
        brickSort(a,n);
    }
    return 0;
}


No comments:

Post a Comment