Menu
×

Được chứng nhận

Ghi lại kiến ​​thức của bạn

Đăng nhập Đăng ký

Tạo Tài khoản Example.com.vn miễn phí để cải thiện trải nghiệm học tập của bạn

Người tìm đường và việc học của tôi

Theo dõi tiến độ học tập của bạn tại Example.com.vn và thu thập phần thưởng

Nâng cấp

Trở thành người dùng PLUS và mở khóa các tính năng mạnh mẽ (không có quảng cáo, lưu trữ, hỗ trợ, ..)

Bắt đầu từ đâu

Bạn không chắc chắn muốn bắt đầu từ đâu? Đi theo con đường được hướng dẫn của chúng tôi

Trình chỉnh sửa mã (Dùng thử)

Với trình chỉnh sửa mã trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã và xem kết quả trong trình duyệt của mình

Video

Tìm hiểu những điều cơ bản về HTML qua video hướng dẫn thú vị và hấp dẫn

Mẫu

Chúng tôi đã tạo một loạt mẫu trang web đáp ứng mà bạn có thể sử dụng - miễn phí!

Web hosting

Lưu trữ trang web của riêng bạn và chia sẻ nó với mọi người với Example.com.vn Spaces

Tạo một máy chủ

Tạo máy chủ của riêng bạn bằng Python, PHP, React.js, Node.js, Java, C#, v.v.

Làm thế nào để

Bộ sưu tập lớn các đoạn mã cho HTML, CSS và JavaScript

Khung CSS

Xây dựng các trang web nhanh và phản hồi bằng cách sử dụng khung W3.CSS miễn phí của chúng tôi

Thống kê trình duyệt

Đọc xu hướng dài hạn của việc sử dụng trình duyệt

Tốc độ gõ

Kiểm tra tốc độ đánh máy của bạn

Đào tạo AWS

Tìm hiểu dịch vụ web của Amazon

Bộ chọn màu

Sử dụng công cụ chọn màu của chúng tôi để tìm các màu RGB, HEX và HSL khác nhau. Bánh xe màu hình tròn thể hiện sự chuyển màu của màu trong quang phổ

Trò chơi mã

Trò chơi mã hóa W3Schools! Giúp linh miêu thu thập nón thông Logo Lynx

Đặt mục tiêu

Nhận hành trình học tập được cá nhân hóa dựa trên các kỹ năng và mục tiêu hiện tại của bạn

Bản tin

Tham gia bản tin của chúng tôi và có quyền truy cập vào nội dung độc quyền mỗi tháng

Việc làm

Thuê những tài năng công nghệ hàng đầu. Hợp lý hóa quy trình tuyển dụng của bạn để có đội ngũ phù hợp hoàn hảo

Lớp học

Hãy liên hệ để sử dụng Example.com.vn Plus và các chứng chỉ với tư cách là một tổ chức giáo dục

×
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP CÁCH W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS AN NINH MẠNG DỮ LIỆU KHOA HỌC

Hướng dẫn DSA

DSA TRANG CHỦ DSA Giới thiệu Thuật toán đơn giản DSA

Mảng

Mảng DSA Sắp xếp bong bóng DSA Sắp xếp lựa chọn DSA Sắp xếp chèn DSA Sắp xếp nhanh DSA Sắp xếp đếm DSA Sắp xếp cơ số DSA Sắp xếp hợp nhất DSA Tìm kiếm tuyến tính DSA Tìm kiếm nhị phân DSA

Danh sách liên kết

Danh sách liên kết DSA Danh sách liên kết DSA trong bộ nhớ Danh sách liên kết DSA Các loại Danh sách liên kết Hoạt động

Ngăn xếp & hàng đợi

Ngăn xếp DSA Hàng đợi DSA

Bảng băm

Bảng băm DSA Bộ hàm băm DSA Bản đồ hàm băm DSA

Cây

Cây DSA Cây nhị phân DSA DSA Traversal đặt hàng trước DSA Traversal theo thứ tự DSA Traversal DSA sau thực hiện mảng DSA Cây tìm kiếm nhị phân DSA Cây AVL DSA

Đồ thị

Đồ thị DSA Thực hiện đồ thị Đồ thị DSA Phát hiện chu trình DSA truyền tải

Con đường ngắn nhất

Đường đi ngắn nhất DSA DSA Bellman-Ford của DSA Dijkstra

Cây bao trùm tối thiểu

Cây khung tối thiểu DSA Prim's DSA Kruskal's

Lưu lượng cực đại

DSA Lưu lượng tối đa DSA Ford-Fulkerson DSA Edmonds-Karp

Độ phức tạp thời gian

Giới thiệu Sắp xếp bong bóng Lựa chọn Sắp xếp Chèn Sắp xếp Sắp xếp nhanh Đếm Sắp xếp Cơ số Sắp xếp Hợp nhất Sắp xếp Tìm kiếm tuyến tính Tìm kiếm nhị phân

Tham chiếu DSA

Thuật toán Euclide DSA Thuật toán tham lam DSA Ghi nhớ DSA DSA Người bán hàng du lịch

Ví dụ về DSA

Ví dụ về DSA Bài tập DSA Câu hỏi DSA Chứng chỉ DSA

Mảng DSA


Mảng

Mảng là một cấu trúc dữ liệu dùng để lưu trữ nhiều phần tử.

Mảng được sử dụng bởi nhiều thuật toán.

Ví dụ: một thuật toán có thể được sử dụng để xem qua một mảng để tìm giá trị thấp nhất, như hình ảnh động bên dưới hiển thị:

Tốc độ:

{{ msgDone }}

Giá trị thấp nhất: {{ minVal }}

Trong Python, một mảng có thể được tạo như thế này:

 my_array = [7, 12, 9, 4, 11]

Lưu ý: Mã Python ở trên thực sự tạo ra kiểu dữ liệu 'danh sách' Python, nhưng trong phạm vi của hướng dẫn này, kiểu dữ liệu 'danh sách' có thể được sử dụng giống như một mảng. Tìm hiểu thêm về danh sách Python tại đây .

Mảng được lập chỉ mục, nghĩa là mỗi phần tử trong mảng có một chỉ mục, một con số cho biết phần tử đó nằm ở đâu trong mảng. Các ngôn ngữ lập trình trong hướng dẫn này (Python, Java và C) sử dụng tính năng lập chỉ mục dựa trên số 0 cho mảng, nghĩa là phần tử đầu tiên trong mảng có thể được truy cập ở chỉ mục 0.

Trong Python, mã này sử dụng chỉ mục 0 để ghi phần tử mảng đầu tiên (giá trị 7) vào bảng điều khiển:

Ví dụ

Trăn:

 my_array = [7, 12, 9, 4, 11]
print( my_array[0] )
Chạy ví dụ »

Thuật toán: Tìm giá trị nhỏ nhất trong mảng

Hãy tạo thuật toán đầu tiên bằng cấu trúc dữ liệu mảng.

Dưới đây là thuật toán tìm số nhỏ nhất trong mảng.

Làm thế nào nó hoạt động:

  1. Lần lượt duyệt qua các giá trị trong mảng.
  2. Kiểm tra xem giá trị hiện tại có phải là thấp nhất cho đến nay hay không và nếu có, hãy lưu trữ nó.
  3. Sau khi xem xét tất cả các giá trị, giá trị được lưu trữ sẽ là giá trị thấp nhất trong tất cả các giá trị trong mảng.

Hãy thử mô phỏng bên dưới để xem thuật toán tìm giá trị thấp nhất hoạt động như thế nào (hình động giống với hình động ở đầu trang này):

Tốc độ:

{{ msgDone }}

Giá trị thấp nhất: {{ minVal }}

Mô phỏng tiếp theo này cũng tìm thấy giá trị thấp nhất trong một mảng, giống như mô phỏng ở trên, nhưng ở đây chúng ta có thể thấy cách kiểm tra các số bên trong mảng để tìm giá trị thấp nhất:

{{ msgDone }}
[
{{ x.dieNmbr }}
]

Thực hiện

Trước khi triển khai thuật toán bằng ngôn ngữ lập trình thực tế, trước tiên bạn nên viết thuật toán theo quy trình từng bước.

Nếu bạn có thể viết thuật toán bằng thứ gì đó giữa ngôn ngữ của con người và ngôn ngữ lập trình, thì thuật toán sẽ dễ thực hiện hơn sau này vì chúng ta tránh bị chìm đắm trong tất cả các chi tiết của cú pháp ngôn ngữ lập trình.

  1. Tạo một biến 'minVal' và đặt nó bằng giá trị đầu tiên của mảng.
  2. Đi qua mọi phần tử trong mảng.
  3. Nếu phần tử hiện tại có giá trị thấp hơn 'minVal', hãy cập nhật 'minVal' thành giá trị này.
  4. Sau khi xem xét tất cả các phần tử trong mảng, biến 'minVal' hiện chứa giá trị thấp nhất.

Bạn cũng có thể viết thuật toán theo cách giống ngôn ngữ lập trình hơn nếu muốn, như sau:

Variable 'minVal' = array[0]
For each element in the array
If current element < minVal
minVal = current element

Lưu ý: Hai mô tả từng bước của thuật toán mà chúng tôi đã viết ở trên có thể được gọi là 'mã giả'. Mã giả là mô tả về chức năng của một chương trình, sử dụng ngôn ngữ nằm giữa ngôn ngữ của con người và ngôn ngữ lập trình.

Sau khi chúng ta viết ra thuật toán, việc triển khai thuật toán bằng một ngôn ngữ lập trình cụ thể sẽ dễ dàng hơn nhiều:

Ví dụ

Trăn:

 my_array = [7, 12, 9, 4, 11]
minVal = my_array[0]    # Step 1

for i in my_array:      # Step 2
    if i < minVal:      # Step 3
        minVal = i
        
print('Lowest value: ',minVal) # Step 4
Chạy ví dụ »

Độ phức tạp thời gian của thuật toán

Thời gian chạy

Khi khám phá các thuật toán, chúng ta thường xem xét thời gian chạy của một thuật toán so với kích thước của tập dữ liệu.

Trong ví dụ trên, thời gian thuật toán cần chạy tỷ lệ thuận hoặc tuyến tính với kích thước của tập dữ liệu. Điều này là do thuật toán phải truy cập từng phần tử mảng một lần để tìm giá trị thấp nhất. Vòng lặp phải chạy 5 lần vì có 5 giá trị trong mảng. Và nếu mảng có 1000 giá trị thì vòng lặp sẽ phải chạy 1000 lần.

Hãy thử mô phỏng bên dưới để thấy mối quan hệ này giữa số lượng thao tác so sánh cần thiết để tìm giá trị thấp nhất và kích thước của mảng.

Xem trang này để được giải thích kỹ lưỡng hơn về độ phức tạp của thời gian.

Mỗi thuật toán trong hướng dẫn này sẽ được trình bày cùng với độ phức tạp về thời gian của nó.

{{ this.userX }}

Hoạt động: {{ hoạt động }}


Bài tập DSA

Kiểm tra bản thân bằng các bài tập

Bài tập:

Làm cách nào chúng ta có thể in giá trị "7" từ mảng bên dưới?

my_array = [7, 12, 9, 4, 11]
in(my_array[ ])

Bắt đầu bài tập



×

Liên hệ bán hàng

Nếu bạn muốn sử dụng dịch vụ của Example.com.vn với tư cách là một tổ chức giáo dục, nhóm hoặc doanh nghiệp, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Báo cáo lỗi

Nếu bạn muốn báo cáo lỗi hoặc nếu bạn muốn đưa ra đề xuất, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Example.com.vn được tối ưu hóa cho việc học tập và đào tạo. Các ví dụ có thể được đơn giản hóa để cải thiện khả năng đọc và học. Các hướng dẫn, tài liệu tham khảo và ví dụ liên tục được xem xét để tránh sai sót, nhưng chúng tôi không thể đảm bảo tính chính xác hoàn toàn của mọi nội dung. Khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng , chính sách cookie và quyền riêng tư của chúng tôi.

Bản quyền 1999-2024 của Refsnes Data. Đã đăng ký Bản quyền. Example.com.vn được cung cấp bởi W3.CSS .