Thuật toán sắp xếp ma trận

Cho ma trận A chỉ gồm các số nguyên dương cấp N*M. Hãy thực hiện sắp xếp ma trận theo **ý tưởng đổi chỗ trực tiếp.Một ma trận được coi là sắp xếp nếu góc trên bên trái là nhỏ nhất, góc dưới bên phải là lớn nhất, theo mỗi hàng hay mỗi cột đều được sắp xếp tăng dần.

em thử chuyển về mảng 1 chiều rồi sắp xếp nhưng nộp btap vẫn ra kq sai hoặc làm theo hàng trước rồi cột nộp bài cũng chưa đúng. mng có thể cho em tham khảo 1 hướng giải khác được không ạ. em cảm ơn

mình góp chút ý:

  • có 3 hàm: nhập, xuất và sắp xếp
    ( đưa ma trận về mảng một chiều: số phần tử trong mảng một chiều = m*n, nên trong vòng for i chạy từ 0 -> m*n; )
  • thuật toán sắp xếp thì mình có thể dùng nhiều cách khác nhau bạn có thể search gg
  • lưu ý hàm xuất: vì đưa về mảng một chiều nên cần điều kiện để mảng xuống dòng tách thành m mảng một chiều)

Có 2 hướng sắp xếp ma trận theo yêu cầu đấy bạn. Vấn đề là sau khi sắp xếp xong, bạn chuyển mảng 1 chiều về 2 chiều bằng cách nào?

  1. Tuần tự trái qua phải và trên xuống dưới?
  2. Theo đường chéo / dưới lên?
1 4 9
2 7 3
8 5 6

Sau khi sắp xếp xong mảng 1 chiều:

1 2 3 4 5 6 7 8 9

Theo cách 1:

1 2 3
4 5 6
7 8 9

Theo cách 2:

1 3 6
2 5 8
4 7 9

Thấy sao? Bạn đã chọn cách nào?

2 Likes

em nghĩ là theo cách 1

4 2 6
3 5 3
5 7 8

theo như test đề cho thì kết quả nó sẽ ra như sau, mà em chuyển về mảng 1 chiều r sắp xếp thì các số bằng sẽ cạnh nhau :

2 3 4
3 5 6
5 7 8

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?