Advertisement
Guest User

matrix_sort.cpp

a guest
Nov 18th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. using namespace std;
  4.  
  5. //matrix[i][j] == matrix[ j*N + i ] => pointer arithmetic
  6.  
  7. void random_matrix( int* matrix, int N ){
  8. srand(time(NULL));
  9. for ( int i = 0; i < N; i++ ){
  10. for ( int j = 0; j < N; j++ ){
  11. matrix[j*N+i] = rand()%10;
  12. }
  13. }
  14. }
  15.  
  16. void print_matrix( int* matrix, int N ){
  17. for ( int i = 0; i < N; i++ ){
  18. for ( int j = 0; j < N; j++ ){
  19. cout << matrix[j*N+i];
  20. }
  21. cout << endl;
  22. }
  23. }
  24.  
  25. void swap( int& a, int& b ){
  26. int tmp = a;
  27. a = b; b = tmp;
  28. }
  29.  
  30. void matrix_sort( int* matrix, int N ){
  31. //Bubble sort analogue
  32. bool swapped;
  33. do{
  34. swapped = 0;
  35. for ( int i = N-1; i >= 0; i-- ){
  36. for ( int j = N-1; j >= 0; j-- ){
  37. if ( i-1 >= 0 && matrix[j*N+i] < matrix[j*N+i-1] ){
  38. swap( matrix[j*N+i], matrix[j*N+i-1] );
  39. swapped = 1;
  40. }
  41. if ( j-1 >= 0 && matrix[j*N+i] < matrix[j*N-N+i] ){
  42. swap( matrix[j*N+i], matrix[j*N-N+i] );
  43. swapped = 1;
  44. }
  45. }
  46. }
  47. }while ( swapped );
  48. }
  49.  
  50. int main(){
  51. int matrix[6][6] = {0};
  52.  
  53. //sorts random 6x6 matrix
  54. random_matrix(&matrix[0][0], 6);
  55. print_matrix(&matrix[0][0], 6);
  56. matrix_sort(&matrix[0][0], 6);
  57. cout << endl;
  58. print_matrix(&matrix[0][0], 6);
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement