对整数数组进行排序

时间:2013-07-30 14:55:10

标签: c++ visual-c++

我通过将整数数组转换为向量来对其进行排序。

#include<iostream>
#include<algorithm>
//#include <sstream>
#include <vector>
#include <iterator>
#include <iomanip>

using namespace std ;
int kj;
int aRawdata [3] [4] =  {{1,0,37,52},{2,0,49,49}, {3,0,52,64}};
int aSolution[3] [4];
int main()
{

 //copy aRawdata to aSolution
    copy(&aRawdata[0][0], &aRawdata[0][0] + 3*4, &aSolution[0][0]);     

    // insering a random number into the second column of aSolution; the column which would be base of the sort
    for ( kj = 0 ; kj < 3 ; kj++)
    {       
        aSolution [kj] [1] =  rand();
    }   
    // converting aSolution  into vector (my_vector)     
        {// start sort using the vectors
        vector< vector<int> > my_vector ;
        for( const auto& row : aSolution ) my_vector.push_back( vector<int>( begin(row), end(row) ) ) ;
        sort( begin(my_vector), end(my_vector),
                   []( const vector<int>& a, const vector<int>& b ) { return a[1] < b[1] ; } ) ;    
        // for Copying a “vector of vector” into“ array of array”
        for (size_t row = 0; row < my_vector.size(); ++row) {
            copy(my_vector[row].begin(), my_vector[row].end(), aSolution[row]);
}       // print 
        for( const auto& row : aSolution )
        {
            for( int v : row ) cout << setw(10) << v ;
            cout << '\n' ;
        }

    }
}

我有两个问题。

  1. 如何将my_vector(有序矢量)的数据再次复制到aSolution中,从而产生排序的aSolution数组?
  2. 如何在不使用矢量的情况下直接对aSolution进行排序? (排序将基于aSolution的第二列)。 问候。

1 个答案:

答案 0 :(得分:0)

Vector的数据在内存中对齐(就像一个大数组),所以只要你确定它的大小合适,你就可以将它重新记忆。

关于你的第二个问题,你自己实施快速入门 - 需要5分钟。 =)否则,我认为如果没有合适的容器,你可以使用std的排序。