logo

2D -vektorin lajittelu C ++: ssa | Aseta 2 (laskevassa järjestyksessä rivin ja sarakkeen mukaan)

Olemme keskustelleet joistakin tapauksista 2D -vektorin lajittelusta alla olevassa sarjassa 1. 2D -vektorin lajittelu C ++: ssa | Aseta 1 (rivillä ja sarakkeella) Tässä artikkelissa käsitellään enemmän tapauksia Tapaus 3: Tietyn 2D -vektorin rivin lajittelu laskevassa järjestyksessä Tämäntyyppinen lajittelu järjestää valitun 2D -vektorin rivin laskevassa järjestyksessä. Tämä saavutetaan käyttämällä lajittelua () ja ohittamalla 1D -vektorin iteraattorit sen väitteinä. 

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; } 

Lähtö:



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 

Se ajan monimutkaisuus tästä algoritmista on O (n log n), jossa n on vektorin koko. 

Se tilan monimutkaisuus tästä algoritmista on O (1), koska ylimääräistä tilaa ei käytetä.


Tapaus 4: Koko 2D -vektorin lajittelu tietyn sarakkeen perusteella laskevassa järjestyksessä. Tämän tyyppisessä lajittelu 2D -vektori on täysin lajiteltu valitun sarakkeen perusteella laskevassa järjestyksessä. Esimerkiksi, jos valittu sarake on toinen, toisessa sarakkeessa suurimman arvon rivi tulee ensimmäisen rivin toisesta suurimmasta arvosta toisessa sarakkeessa toiseksi rivillä ja niin edelleen. {3 5 1} {4 8 6} {7 2 9}; Kun olet lajiteltu tämän matriisin toisella sarakkeella, saamme {4 8 6} // rivi, jolla on suurin arvo toisessa sarakkeessa {3 5 1} // Rivillä toisella suurin arvo toisessa sarakkeessa {7 2 9} Tämä saavutetaan siirtämällä kolmas argumentti lajittelussa () puheluna käyttäjän määrittelemälle nimenomaiselle toiminnolle. 



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; } 

Lähtö:

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 

Se ajan monimutkaisuus tästä algoritmista on O (nlogn) missä n on 2D -vektorin elementtien lukumäärä. Tämä johtuu lajittelun () toiminnon käytöstä, joka toimii O (nlogn) -aikana.

Se tilan monimutkaisuus tästä algoritmista on O (1) koska ylimääräisiä tietorakenteita ei käytetä.