logo

C++'da 2B Vektörü Sıralama | Set 2 (Satır ve sütuna göre azalan sırada)

Aşağıdaki set 1'de 2 boyutlu vektörün sınıflandırılmasına ilişkin bazı durumları tartıştık. C++'da 2B Vektörü Sıralama | Set 1 (Satır ve sütuna göre) Bu makalede daha fazla vaka tartışılmaktadır Durum 3: Belirli bir 2B vektör satırını azalan düzende sıralamak için Bu sıralama türü, seçilen 2 boyutlu vektör satırını azalan düzende düzenler. Bu, sort() kullanılarak ve 1B vektörün yineleyicilerinin argüman olarak iletilmesiyle elde edilir. 

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

Çıkış:



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 

zaman karmaşıklığı bu algoritmanın değeri O(n log n)'dir; burada n, vektörün boyutudur. 

uzay karmaşıklığı Bu algoritmanın değeri O(1)'dir çünkü ek alan kullanılmaz.


Durum 4: Tüm 2 boyutlu vektörü belirli bir sütuna göre azalan düzende sıralamak. Bu tür sıralamada 2 boyutlu vektör tamamen seçilen sütuna göre azalan düzende sıralanır. Örneğin, seçilen sütun ikinci ise, ikinci sütundaki en büyük değere sahip satır birinci satır olur, ikinci sütundaki ikinci en büyük değer ikinci satır olur ve bu şekilde devam eder. {3 5 1} {4 8 6} {7 2 9}; Bu matrisi ikinci sütuna göre sıraladıktan sonra şunu elde ederiz: {4 8 6} // İkinci sütunda en büyük değere sahip satır {3 5 1} // İkinci sütunda ikinci en büyük değere sahip satır {7 2 9} Bu, sort()'da üçüncü bir argümanın kullanıcı tanımlı açık işleve çağrı olarak iletilmesiyle elde edilir. 



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

Çıkış:

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 

zaman karmaşıklığı bu algoritmanın Ç(NlogN) burada N, 2B vektördeki öğelerin sayısıdır. Bunun nedeni O(NlogN) zamanında çalışan sort() fonksiyonunun kullanılmasıdır.

uzay karmaşıklığı bu algoritmanın Ç(1) çünkü hiçbir ek veri yapısı kullanılmamaktadır.