Сортування 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 & lt ; vector & lt ; int & gt ; & gt ; 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 & lt ; & lt ; & quot ; The Matrix before sorting 1 st row is : n & quot ;; for ( int i = 0 ; i & lt ; m ; i ++ ) { for ( int j = 0 ; j & lt ; n ; j ++ ) cout & lt ; & lt ; vect [ i ][ j ] & lt ; & lt ; & quot ; & quot ;; cout & lt ; & lt ; endl ; } // Use of 'sort()' for sorting first row sort ( vect [ 0 ]. rbegin () vect [ 0 ]. rend ()); // Displaying the 2D vector after sorting cout & lt ; & lt ; & quot ; The Matrix after sorting 1 st row is : n & quot ;; for ( int i = 0 ; i & lt ; m ; i ++ ) { for ( int j = 0 ; j & lt ; n ; j ++ ) cout & lt ; & lt ; vect [ i ][ j ] & lt ; & lt ; & quot ; & quot ;; cout & lt ; & lt ; 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} Це досягається шляхом передачі третього аргументу за сортом () як заклик до визначеної користувача явної функції.
// 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 & lt ; int & gt ; & amp ; v1 const vector & lt ; int & gt ; & amp ; v2 ) { return v1 [ 1 ] & gt ; v2 [ 1 ]; } int main () { // Initializing 2D vector 'vect' with // values vector & lt ; vector & lt ; int & gt ; & gt ; 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 & lt ; & lt ; & quot ; The Matrix before sorting is : n & quot ;; for ( int i = 0 ; i & lt ; m ; i ++ ) { for ( int j = 0 ; j & lt ; n ; j ++ ) cout & lt ; & lt ; vect [ i ][ j ] & lt ; & lt ; & quot ; & quot ;; cout & lt ; & lt ; 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 & lt ; & lt ; & quot ; The Matrix after sorting is : n & quot ;; for ( int i = 0 ; i & lt ; m ; i ++ ) { for ( int j = 0 ; j & lt ; n ; j ++ ) cout & lt ; & lt ; vect [ i ][ j ] & lt ; & lt ; & quot ; & quot ;; cout & lt ; & lt ; 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) Оскільки додаткових структур даних не використовується.