[Mảng hai chiều] – Thuật toán đổ dữ liệu về mảng một chiều và ngược lại

Nếu bạn đã quen với các bài toán về sắp xếp hoặc các bài toán khác trên mảng một chiều, bạn có thể đổ mảng hai chiều vào mảng một chiều, sau đó thực hiện các bài toán đặc trưng, sau đó đổ lại kết quả vào mảng 2 chiều.

Yêu cầu

Viết chương trình khởi tạo một mảng hai chiều có n hàng, m cột với các phần tử là số nguyên, sau đó đổ dữ liệu này sang mảng một chiều, sắp xếp và đổ lại vào mảng 2 chiều.

Phân tích và tìm cách giải

  • Đầu vào: mảng các phần tử a[2][3] ={{3,7,9},{2,4,1}}, giá trị x
  • Đầu ra: In ra mảng đã sắp xếp
  • Phân tích:
    • Khai báo một mảng một chiều có chiều dài bằng tổng tất cả các phần tử của mảng hai chiều. k=n*m.
    • Đổ dữ liệu từ mảng hai chiều sang mảng một chiều
    • Sắp xếp trên mảng một chiều
    • Đổ dữ liệu từ mảng một chiều sang mảng hai chiều

Các bước thực hiện

Khởi tạo mảng a[2][3], khai báo bảng b[6]

//Đổ dữ liệu từ mảng 2 chiều sang mảng 1 chiều
Cho lặp biến i từ 0 đến n-1, với n là số hàng
Lặp biên j từ 0 đến m-1, với m số cột
   b[i*m + j] = a[i][j]
Gọi lệnh sắp xếp trên bảng b đã thực hiện trong bài mảng một chiều

//Đổ dữ liệu từ mảng 1 chiều về lại mảng 2 chiều
Cho lặp biến i từ 0 đến n-1, với n là số hàng
   Lặp biên j từ 0 đến m-1, với m số cột
   a[i][j] = b[i*m + j]

Cách biểu diễn thuật toán

Trong trường hợp này, tôi sử dụng ngôn ngữ giả.

Declare int a[2,3] ={{3,7,9},{2,4,1}},b[6], i,j, n,m,k

n= a.lengh

m=a[0].lengh

// Đổ dữ liệu từ mảng hai chiều sang mảng một chiều

Loop i=0 to n-1

   Loop j=0 to m-1

      b[i*m +j] = a[i][j]

// Gọi lệnh sắp xếp mảng b

bubble_sort(b);

// Đổ dữ liệu từ mảng một chiều b sang mảng 2 chiều a

Loop i=0 to n-1

   Loop j=0 to m-1

      a[i][j]= b[i*m +j]

Ngoài ra,  bạn cũng có thể tự Dry Run để kiểm tra kết quả.

Bài tiếp: Các thuật toán cơ bản về chuỗi

Bài trước: Các thuật toán cơ bản về mảng hai chiều

Đối tác tuyển dụng