posted by pflower 2014. 12. 4. 11:27

#include <iostream>

#include <fstream>

#include <math.h>


using namespace std;


int n;

int mat[100][100];


int main()

{

fstream fin("input.txt");



fin >> n;

for(int i = 0; i < n; i ++)

{

for(int j = 0; j < n; j ++)

fin >> mat[i][j];

}

int v = log((double)n) / log(2.0);

for(int iter = 0; iter < v ; iter++)// 로그엔번

{

for(int i = 0; i < n; i ++)

{

for(int k = 0; k < n; k ++)

{

for(int j = 0; j + 1 < n; j += 2)

{

if( (i % 2) == 0 && mat[i][j] > mat[i][j + 1])

{

std::swap(mat[i][j], mat[i][j + 1]);

}

else if( (i % 2) == 1 && mat[i][j] < mat[i][j + 1])

{

std::swap(mat[i][j], mat[i][j + 1]);

}

}

for(int j = 1; j + 1 < n; j += 2)

{

if( (i % 2) == 0 && mat[i][j] > mat[i][j + 1])

{

std::swap(mat[i][j], mat[i][j + 1]);

}

else if( (i % 2) == 1 && mat[i][j] < mat[i][j + 1])

{

std::swap(mat[i][j], mat[i][j + 1]);

}

}

}

}



cout << endl;

/// 수직 검사

for(int j = 0; j < n; j ++){

for(int k = 0; k < n; k ++)

{

for(int i = 0; i + 1 < n; i += 2) 

{

if( mat[i][j] > mat[i + 1][j])

std::swap(mat[i][j], mat[i + 1][j]);

}


for(int i = 1; i + 1 < n; i += 2) 

{

if( mat[i][j] > mat[i + 1][j])

std::swap(mat[i][j], mat[i + 1][j]);

}

}

}

}


for(int i = 0; i < n; i ++)

{

for(int k = 0; k < n; k ++)

{

for(int j = 0; j + 1 < n; j += 2) 

{

if( mat[i][j] > mat[i][j + 1])

{

std::swap(mat[i][j], mat[i][j + 1]);

}

}


for(int j = 1; j + 1 < n; j += 2) 

{

if( mat[i][j] > mat[i][j + 1])

{

std::swap(mat[i][j], mat[i][j + 1]);

}

}

}

}


for(int i = 0; i < n; i ++)

{

for(int j = 0; j < n; j ++)

cout << mat[i][j] << " ";

cout << endl;

}

}

Parrelel Sort.cpp