Разговарали смо о неким случајевима сортирања 2Д вектора испод сета 1. Сортирање 2Д вектор у Ц ++ | Сет 1 (по ред и колони) У овом чланку се расправља више случајева Случај 3: Поредати одређени ред 2Д вектора у силазном редоследу Ова врста сортирања уређује изабрани ред 2Д вектора у силазном редоследу. То се постиже коришћењем сортирања () и проласка итератора 1Д вектора као његових аргумената.
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
Тхе сложеност времена овог алгоритма је о (н лог н) где н је величина вектора.
Тхе свемирска сложеност овог алгоритма је О (1) као да се користи додатни простор.
Случај 4: Сортирање целог 2Д вектора на основу одређене колоне у силазном редоследу. У овој врсти сортирања 2Д вектор је у потпуности сортиран на основу изабраног колоне у силазном редоследу. На пример, ако је изабрани колона други редар са највећом вриједношћу у другој колони постаје први ред Друга највећа вредност у другом колону постаје други ред и тако даље. {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
Тхе сложеност времена овог алгоритма је О (нЛон) где је н број елемената у 2Д вектору. То је због употребе функције сортирања () која ради у (НЛОГН) време.
Тхе свемирска сложеност овог алгоритма је О (1) Пошто се не користе додатне структуре података.