#include "stdafx.h"
#include <iostream>
const static int _MATRIX_NUM_ =
6;
const static int _ROW_NUM_
= 5;
enum { MAXTRIX_ROW =
0, MAXTRIX_COL =
1, MAXTRIX_VAL =
2, };
int _tmain( int argc , _TCHAR* argv[])
{
int arrayThreeItem [_ROW_NUM_][3]={
{ 0, 1, 5 }, { 1, 2, 4 }, { 2, 2, 3 }, { 3, 1, 19 }, { 5, 2, 12 } };
//
Record Each Row Number of Value
int arrayItemNum [_MATRIX_NUM_];
int arrayItemInitIndex [_MATRIX_NUM_];
for( int i =
0; i < _MATRIX_NUM_ ;
++i )
{
arrayItemNum[i ]
= 0;
arrayItemInitIndex[i ]
= 0;
}
for( int i =
0; i < _ROW_NUM_ ;
++i )
{
int nCol = arrayThreeItem[ i][MAXTRIX_COL ];
arrayItemNum[nCol ]
= arrayItemNum[ nCol]
+ 1;
}
arrayItemInitIndex[0]
= 0;
for( int i =
1; i < _MATRIX_NUM_ ;
++i )
{
arrayItemInitIndex[i ]
= arrayItemInitIndex[ i -
1] + arrayItemNum [i -
1];
}
int arrayReserve [_ROW_NUM_][3];
for( int i =
0; i < _ROW_NUM_ ;
++i )
{
int nCol
= arrayThreeItem[ i][MAXTRIX_COL ];
int nIndex = arrayItemInitIndex[ nCol];
arrayReserve[nIndex ][MAXTRIX_ROW]
= arrayThreeItem [i][ MAXTRIX_COL];
arrayReserve[nIndex ][MAXTRIX_COL]
= arrayThreeItem [i][ MAXTRIX_ROW];
arrayReserve[nIndex ][MAXTRIX_VAL]
= arrayThreeItem [i][ MAXTRIX_VAL];
++ arrayItemInitIndex[nCol ];
}
//
Print
std::cout <<"Init
Three Item :"<<std ::endl;
for( int i =
0; i < _ROW_NUM_ ;
++i )
{
std::cout <<"Row->"<<arrayThreeItem [i][ MAXTRIX_ROW]<<"
Col->"<< arrayThreeItem[i ][MAXTRIX_COL]<< "
Value->"<< arrayThreeItem[i ][MAXTRIX_VAL]<< std::endl ;
}
std::cout <<std:: endl<<"Reserve
Three Item :"<< std::endl ;
for( int i =
0; i < _ROW_NUM_ ;
++i )
{
std::cout <<"Row->"<<arrayReserve [i][ MAXTRIX_ROW]<<"
Col->"<< arrayReserve[i ][MAXTRIX_COL]<< "
Value->"<< arrayReserve[i ][MAXTRIX_VAL]<< std::endl ;
}
system( "pause" );
return 0;
}