Hỏi Về Cách Dùng 1 Vòng Lặp Duyệt Mảng 2 Chiều

  • Trang chủ
  • AngularJS
  • Blog
  • Bootstrap
  • C / C++
  • Cấu trúc dữ liệu & Giải thuật
  • Cơ sở dữ liệu
  • Codeigniter
  • Công cụ lập trình
  • CSS
  • Học Excel
  • HTML
  • Java
  • Javascript
  • jQuery
  • Json
  • Lập trình mobile
  • Laravel
  • Linux
  • MongoDB
  • MySQL
  • NodeJS
  • Oracle
  • Pascal
  • PHP
  • Python
  • React Native
  • ReactJS
  • Ruby
  • SEO
  • SQL Server
  • Swift
  • Visual Basic
  • VueJS
  • WordPress
  • XML
Code24h.com › Hỏi về cách dùng 1 vòng lặp duyệt mảng 2 chiều
Đối với người biết cách dùng 1 vòng lặp duyệt mảng 2 chiều.

Mọi người cho em hỏi về cái này ạ, em mới nghe lần đầu.

Cách này làm thế nào ? Nhanh hay chậm hơn so với cách dùng 2 vòng lặp? Nên dùng cách này hay cách cũ (vì trước giờ em chưa thấy ai nói hay làm kiểu này).

Cám ơn mọi người ạ

TTmagic viết 18:47 ngày 30/09/2018

làm được, nhưng không nên làm, vì nó hại não

Gió viết 18:46 ngày 30/09/2018

Em có thể dùng 1 vòng lặp bằng cách tính chỉ số của nó theo thứ tự duyệt: Giả sử mảng kích thước m*n mang[i][j] <=> thứ tự = i*n+j

duyệt bằng 1 vòng for:

for (k =0;k< m*n;++k){ i=k/n; j=k%n; } Nguyễn Minh Dũng viết 18:45 ngày 30/09/2018

Confirm là không ai “rảnh” làm như thế này nhé.

#include <stdio.h> int main() { int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // Print value using double for loop for(int i = 0; i < 3; ++i) { for(int j = 0; j < 3; ++j) { printf("%d ", arr[i][j]); } printf("\n"); } // Print address using double for loop for(int i = 0; i < 3; ++i) { for(int j = 0; j < 3; ++j) { printf("%p ", &arr[i][j]); } printf("\n"); } // Print value using single for loop int *pa = arr; for(int i = 0; i < 3*3; ++i) { printf("%d ", *(pa+i)); if ( (i + 1) % 3 == 0 ) printf("\n"); } // Print address using print address for(int i = 0; i < 3*3; ++i) { printf("%p ", pa+i); if ( (i + 1) % 3 == 0 ) printf("\n"); } } nhatlonggunz viết 18:38 ngày 30/09/2018

Confirm là không ai “rảnh” làm như thế này nhé.

Là sao anh, em không hiểu ý anh nói.

Nguyễn Minh Dũng viết 18:39 ngày 30/09/2018

Ý là anh viết chương trình mẫu sử dụng một vòng lặp để lặp qua mảng 2 chiều rồi đấy, em xem thử đi.

Nhưng mà không có ai làm như vậy cả. Chương trình anh viết chỉ là demo thôi

nhatlonggunz viết 18:39 ngày 30/09/2018

Vậy mình có nên dùng cách đó không anh, và cách đó có tối ưu hơn (chạy nhanh hơn) cách 2 vòng lặp không ?

Nguyễn Minh Dũng viết 18:48 ngày 30/09/2018

Không tối ưu hơn đâu @nhatlonggunz

Mà code phức tạp, nhiều khả năng gây ra lỗi.

viết 18:47 ngày 30/09/2018

Người ta chỉ sử dụng mảng 1 chiều thay cho mảng 2 chiều và có thể dùng 1 vòng for duyệt hết cả mảng. Ví dụ đơn giản để tạo mảng 1 chiều mà sử dụng như mảng 2 chiều như thế này.

#include<iostream> using namespace std; // bien extern int const ROWS = 2; extern int const COLS = 2; extern int const MATRIX[ROWS*COLS] = { 1 , 2 , 3, 4}; // thay cho mang 2x2 // lay gia tri cua matrix theo hang va cot int matrix(int row, int col) { assert(row >= 0 && row < ROWS); assert(col >= 0 && col < COLS); return MATRIX[(row*COLS) + col]; } int main() { cout<<"matrix[0][0] = "<<matrix(0,0)<<endl; cout<<"matrix[0][1] = "<<matrix(0,1)<<endl; cout<<"matrix[1][0] = "<<matrix(1,0)<<endl; cout<<"matrix[1][1] = "<<matrix(1,1)<<endl; return 0; } Sáng Béo viết 18:42 ngày 30/09/2018

cái này trước làm mảng động 2 chiều dùng con trỏ e từng làm nè, nhưng thầy giáo hướng dẫn lại cách chạy 2 vòng for. thật ra thì 2 vòng này như nhau, đều có độ phức tạp o(n^2) nhỉ.

lâm phúc tài viết 18:43 ngày 30/09/2018

double for loop

Cho em hỏi cái trên ý nghĩa là gì ạ

nhatlonggunz viết 18:47 ngày 30/09/2018

Là 2 vòng for, dùng từ double, có nghĩa là đôi, ý muốn nói 2 vòng for đi đôi với nhau (hay ta gọi là lồng nhau)

Tự Nhiên Quên viết 18:48 ngày 30/09/2018

em cũng đang băng khoăn nên em có viết 1 bài anh dành thời gian xem được không cảm ơn anh http://daynhauhoc.com/t/cach-nhanh-co-that-su-nhanh-trong-sap-xep-mang-2-chieu/4293

Bình luận về bài viết này Chia sẻ tin đăng đến bạn bè Gửi Messenger Copy link Bài liên quan Cho thuê phòng trọ hà nội | Cho thuê phòng trọ bình thạnh | Cho thuê phòng trọ | Cho thuê nhà trọ ® Ghi rõ nguồn "code24h.com" khi bạn phát hành lại thông tin từ website này. Phiên bản v1.0

Từ khóa » Duyệt Mảng 2 Chiều