logo

Сортування 2D вектора в C ++ | Встановіть 2 (у порядку зменшення за рядком та стовпцем)

Ми обговорили деякі випадки сортування 2D вектора в нижче наборі 1. Сортування 2D вектора в C ++ | Встановіть 1 (за рядком і стовпцем) У цій статті обговорюється більше випадків Випадок 3: Сортувати певний ряд 2D вектора у порядку зменшення Цей тип сортування влаштовує вибраний ряд 2D вектора в порядку зменшення. Це досягається за допомогою Sort () та передачі ітераторів 1D вектора як його аргументів. 

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

Вихід:



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 

З Складність часу цього алгоритму є O (n log n), де n - розмір вектора. 

З космічна складність цього алгоритму є O (1), оскільки додаткового місця не використовується.


Випадок 4: Сортувати весь 2D вектор на основі певного стовпця в порядку зменшення. У цьому типі сортування 2D вектора повністю відсортований на основі обраного стовпця в порядку зменшення. Наприклад, якщо обраний стовпчик є другим, рядок з найбільшим значенням у другому стовпці стає першим рядом другого найбільшого значення у другому стовпці стає другим рядком і так далі. {3 5 1} {4 8 6} {7 2 9}; Після сортування цієї матриці за другим стовпцем ми отримуємо {4 8 6} // рядок з найбільшим значенням у другому стовпці {3 5 1} // рядок із другим найбільшим значенням у другому стовпці {7 2 9} Це досягається шляхом передачі третього аргументу за сортом () як заклик до визначеної користувача явної функції. 



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

Вихід:

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 

З Складність часу цього алгоритму є O (nlogn) де N - кількість елементів у 2D векторі. Це пов’язано з використанням функції Sort (), яка працює в час O (nlogn).

З космічна складність цього алгоритму є O (1) Оскільки додаткових структур даних не використовується.