Hem discutit alguns dels casos d’ordenació del vector 2D al conjunt 1. Ordenació del vector 2D a C ++ | Set 1 (per fila i columna) Es discuteixen més casos en aquest article Cas 3: Per ordenar una fila particular de vector 2D en ordre descendent Aquest tipus d’ordenació organitza una fila seleccionada de vector 2D en ordre descendent. Això s’aconsegueix mitjançant l’ús de SORT () i passant iteradors del vector 1D com a arguments.
CPP// C++ code to demonstrate sorting of a // row of 2D vector in descending order #include #include // for 2D vector #include // for sort() using namespace std; int main() { // Initializing 2D vector 'vect' with // values vector< vector<int> > vect{{3 5 1} {4 8 6} {7 2 9}}; // Number of rows; int m = vect.size(); // Number of columns (Assuming all rows // are of same size). We can have different // sizes though (like Java). int n = vect[0].size(); // Displaying the 2D vector before sorting cout << "The Matrix before sorting 1st row is:n"; for (int i=0; i<m; i++) { for (int j=0; j<n ;j++) cout << vect[i][j] << " "; cout << endl; } // Use of 'sort()' for sorting first row sort(vect[0].rbegin() vect[0].rend()); // Displaying the 2D vector after sorting cout << "The Matrix after sorting 1st row is:n"; for (int i=0; i<m; i++) { for (int j=0; j<n ;j++) cout << vect[i][j] << " "; cout << endl; } return 0; }
Sortida:
The Matrix before sorting 1st row is: 3 5 1 4 8 6 7 2 9 The Matrix after sorting 1st row is: 5 3 1 4 8 6 7 2 9
El complexitat temporal D’aquest algorisme és O (N log n) on n és la mida del vector.
El complexitat espacial D’aquest algorisme és O (1), ja que no s’utilitza cap espai addicional.
Cas 4: Per ordenar tot el vector 2D a partir d’una determinada columna en ordre descendent. En aquest tipus d’ordenació, el vector 2D s’ordena completament a partir d’una columna escollida en ordre descendent. Per exemple, si la columna escollida és la segona, la fila amb el valor més gran a la segona columna es converteix en la segona fila. El segon valor més gran de la segona columna es converteix en segona fila, etc. {3 5 1} {4 8 6} {7 2 9}; Després d’haver ordenat aquesta matriu per segona columna, obtenim {4 8 6} // ROW amb el valor més gran a la segona columna {3 5 1} // ROW amb el segon valor més gran a la segona columna {7 2 9} Això s’aconsegueix passant un tercer argument a SORT () com a trucada per a l’usuari definit per a l’usuari.
CPP
// C++ code to demonstrate sorting of a // 2D vector on basis of a column in // descending order #include #include // for 2D vector #include // for sort() using namespace std; // Driver function to sort the 2D vector // on basis of a particular column in // descending order bool sortcol( const vector<int>& v1 const vector<int>& v2 ) { return v1[1] > v2[1]; } int main() { // Initializing 2D vector 'vect' with // values vector< vector<int> > vect{{3 5 1} {4 8 6} {7 2 9}}; // Number of rows; int m = vect.size(); // Number of columns (Assuming all rows // are of same size). We can have different // sizes though (like Java). int n = vect[0].size(); // Displaying the 2D vector before sorting cout << "The Matrix before sorting is:n"; for (int i=0; i<m; i++) { for (int j=0; j<n ;j++) cout << vect[i][j] << " "; cout << endl; } // Use of 'sort()' for sorting on basis // of 2nd column in descending order sort(vect.begin() vect.end()sortcol); // Displaying the 2D vector after sorting cout << "The Matrix after sorting is:n"; for (int i=0; i<m; i++) { for (int j=0; j<n ;j++) cout << vect[i][j] << " "; cout << endl; } return 0; }
Sortida:
The Matrix before sorting is: 3 5 1 4 8 6 7 2 9 The Matrix after sorting is: 4 8 6 3 5 1 7 2 9
El complexitat temporal D’aquest algorisme ho és O (nlogn) on n és el nombre d’elements del vector 2D. Això es deu a l’ús de la funció SORT () que s’executa en temps O (NLOGN).
El complexitat espacial D’aquest algorisme ho és O (1) ja que no s’utilitzen estructures de dades addicionals.