fork(1) download
  1. //(c)Terminator
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <iterator>
  5. using namespace std;
  6.  
  7.  
  8. //сортировка матрицы по-указанному столбцу "Выборочной сортировкой"
  9. void mdesc_ssort(int** mat, size_t sel_col, size_t rows, size_t cols){
  10. size_t imax;
  11. for(size_t i = 0; i < rows; ++i){
  12. imax = i;
  13. for(size_t j = i + 1; j < rows; ++j){
  14. if(mat[j][sel_col] > mat[imax][sel_col])
  15. imax = j;
  16. }
  17.  
  18. if(imax != i){
  19. for(size_t c = 0; c < cols; ++c)
  20. swap(mat[imax][c], mat[i][c]);
  21. }
  22. }
  23. }
  24.  
  25.  
  26.  
  27. int main(void){
  28. const size_t rows = 7;
  29. const size_t cols = 12;
  30. size_t i;
  31.  
  32. int** mat = new int*[rows];
  33. for(i = 0; i < rows; ++i){
  34. mat[i] = new int[cols];
  35. for(size_t c = 0; c < cols; ++c)
  36. mat[i][c] = rand() % 10;
  37. }
  38.  
  39.  
  40. //вывести исходную матрицу
  41. for(i = 0; i < rows; ++i){
  42. copy(mat[i], mat[i] + cols, ostream_iterator<int>(cout, " "));
  43. cout << endl;
  44. }
  45. cout << endl;
  46.  
  47. //сортировать по первому столбцу матрицы
  48. mdesc_ssort(mat, 0, rows, cols);
  49.  
  50. //вывести отсортированную матрицу
  51. for(i = 0; i < rows; ++i){
  52. copy(mat[i], mat[i] + cols, ostream_iterator<int>(cout, " "));
  53. cout << endl;
  54. }
  55. cout << endl;
  56.  
  57. //удаление в конце "работы"
  58. for(i = 0; i < rows; ++i)
  59. delete[] mat[i];
  60. delete[] mat;
  61.  
  62. cin.get();
  63. return 0;
  64. }
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
3 6 7 5 3 5 6 2 9 1 2 7 
0 9 3 6 0 6 2 6 1 8 7 9 
2 0 2 3 7 5 9 2 2 8 9 7 
3 6 1 2 9 3 1 9 4 7 8 4 
5 0 3 6 1 0 6 3 2 0 6 1 
5 5 4 7 6 5 6 9 3 7 4 5 
2 5 4 7 4 4 3 0 7 8 6 8 

5 0 3 6 1 0 6 3 2 0 6 1 
5 5 4 7 6 5 6 9 3 7 4 5 
3 6 1 2 9 3 1 9 4 7 8 4 
3 6 7 5 3 5 6 2 9 1 2 7 
2 0 2 3 7 5 9 2 2 8 9 7 
2 5 4 7 4 4 3 0 7 8 6 8 
0 9 3 6 0 6 2 6 1 8 7 9