Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

📝 Thuật toán và cấu trúc dữ liệu được triển khai bằng JavaScript kèm theo phần giải thích và liên kết đến các bài đọc thêm - fork về dịch cho thằng em yếu tiếng Anh của mình học =))

License

NotificationsYou must be signed in to change notification settings

tcdtist/fork-javascript-data-structures-and-algorithms

 
 

Repository files navigation

CIcodecovrepo size

Kho lưu trữ này chứa các ví dụ dựa trên JavaScriptvề nhiều thuật toán và cấu trúc dữ liệu phổ biến.

Mỗi thuật toán và cấu trúc dữ liệu đều có một tệp READMEriêng với các giải thích liên quan và các liên kết để đọc thêm (bao gồm cả các video trên YouTube).

Đọc tài liệu này bằng ngôn ngữ khác:English

Nguồn - Kho lưu trữ gốc

☝ Lưu ý rằng dự án này chỉ được sử dụng cho mục đích học tập và nghiên cứu,không dùng cho sản xuất.

Data Structures - Cấu trúc dữ liệu

Cấu trúc dữ liệu là một cách đặc biệt để tổ chức và lưu trữ dữ liệu trong máy tính sao cho có thể truy cập và sửa đổi hiệu quả.Một cách chính xác hơn, cấu trúc dữ liệu là tập hợp các giá trị dữ liệu,các mối quan hệ giữa chúng, và các hàm hoặc thao tác có thể được áp dụng cho dữ liệu.

B - Người mới bắt đầu,A - Nâng cao

Algorithms - Thuật toán

Thuật toán là một đặc tả không mơ hồ về cách giải quyết một lớp vấn đề.Đó là một tập hợp các quy tắc xác định chính xác một chuỗi các thao tác.

B - Người mới bắt đầu,A - Nâng cao

Algorithms by Topic - Thuật toán theo Chủ đề

Algorithms by Paradigm - Thuật toán theo Mô hình

Một mô hình thuật toán là một phương pháp chung hoặc cách tiếp cận chung chung cho thiết kế một loạt thuật toán.Nó là một trừu tượng cao hơn so với khái niệm thuật toán,giống như thuật toán là một trừu tượng cao hơn so với chương trình máy tính.

How to use this repository - Cách sử dụng kho lưu trữ này

Install all dependencies - Cài đặt tất cả các phụ thuộc

npm install

Run ESLint - Chạy ESLint

Bạn có thể muốn chạy nó để kiểm tra chất lượng mã.

npm run lint

Run all tests - Chạy tất cả các bài kiểm tra

npm test

Run tests by name - Chạy các bài kiểm tra theo tên

npm test -- 'LinkedList'

Troubleshooting - Khắc phục sự cố

Nếu việc linting hoặc kiểm tra thất bại, hãy thử xóa thư mụcnode_modules và cài đặt lại các gói npm:

rm -rf ./node_modulesnpm i

Cũng đảm bảo rằng bạn đang sử dụng phiên bản Node đúng (>=16). Nếu bạn đang sử dụngnvm để quản lý phiên bản Node, bạn có thể chạynvm use từ thư mục gốc của dự án và phiên bản đúng sẽ được chọn.

Playground - Sân chơi

Bạn có thể chơi với các cấu trúc dữ liệu và thuật toán trong tệp./src/playground/playground.jsvà viết các bài kiểm tra cho nó trong./src/playground/__test__/playground.test.js.

Sau đó chỉ cần chạy lệnh sau để kiểm tra xem mã sân chơi của bạn có hoạt động như mong đợi hay không:

npm test -- 'playground'

Useful Information - Thông tin hữu ích

References - Tài liệu tham khảo

Big O Notation - Ký hiệu Big O

Ký hiệu Big O được sử dụng để phân loại các thuật toán theo cách thời gian chạy hoặc yêu cầu không gian của chúng tăng lên như thế nào khi kích thước đầu vào tăng lên.Trên biểu đồ dưới đây, bạn có thể tìm thấy các trật tự tăng trưởng phổ biến nhất của các thuật toán được chỉ định trong ký hiệu Big O.

Biểu đồ Big O

Nguồn:Big O Cheat Sheet.

Dưới đây là danh sách một số ký hiệu Big O phổ biến nhất và so sánh hiệu suất của chúng đối với các kích thước dữ liệu đầu vào khác nhau.

Big O NotationTypeComputations for 10 elementsComputations for 100 elementsComputations for 1000 elements
O(1)Constant111
O(log N)Logarithmic369
O(N)Linear101001000
O(N log N)n log(n)306009000
O(N^2)Quadratic100100001000000
O(2^N)Exponential10241.26e+291.07e+301
O(N!)Factorial36288009.3e+1574.02e+2567

Data Structure Operations Complexity

Data StructureAccessSearchInsertionDeletionComments
Array1nnn
Stacknn11
Queuenn11
Linked Listnn1n
Hash Table-nnnIn case of perfect hash function costs would be O(1)
Binary Search TreennnnIn case of balanced tree costs would be O(log(n))
B-Treelog(n)log(n)log(n)log(n)
Red-Black Treelog(n)log(n)log(n)log(n)
AVL Treelog(n)log(n)log(n)log(n)
Bloom Filter-11-False positives are possible while searching

Array Sorting Algorithms Complexity

NameBestAverageWorstMemoryStableComments
Bubble sortnn2n21Yes
Insertion sortnn2n21Yes
Selection sortn2n2n21No
Heap sortn log(n)n log(n)n log(n)1No
Merge sortn log(n)n log(n)n log(n)nYes
Quick sortn log(n)n log(n)n2log(n)NoQuicksort is usually done in-place with O(log(n)) stack space
Shell sortn log(n)depends on gap sequencen (log(n))21No
Counting sortn + rn + rn + rn + rYesr - biggest number in array
Radix sortn * kn * kn * kn + kYesk - length of longest key

Project Backers - Nhà tài trợ dự án

Bạn có thể hỗ trợ dự án này qua ❤️️GitHub hoặc ❤️️Patreon.

Những người đang tài trợ cho dự án này∑ = 1

Author - Tác giả

@trekhleb

Thêm một sốdự ánbài viết về JavaScript và thuật toán tạitrekhleb.dev

About

📝 Thuật toán và cấu trúc dữ liệu được triển khai bằng JavaScript kèm theo phần giải thích và liên kết đến các bài đọc thêm - fork về dịch cho thằng em yếu tiếng Anh của mình học =))

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript100.0%

[8]ページ先頭

©2009-2025 Movatter.jp