Tôi có thể sử dụng JavaScript cho cấu trúc dữ liệu và thuật toán không?

Là một nhà phát triển JavaScript có kinh nghiệm chuyển sang lập trình phía máy chủ, bạn cần triển khai các thuật toán và cấu trúc dữ liệu cổ điển được liên kết với các ngôn ngữ hướng đối tượng thông thường như C# và Java. Hướng dẫn thực tế này chỉ cho bạn cách làm việc thực tế với nhiều cơ chế lưu trữ—bao gồm danh sách được liên kết, ngăn xếp, hàng đợi và biểu đồ—trong giới hạn của môi trường JavaScript

Bạn sẽ tìm hiểu về các kiểu dữ liệu cơ bản và cấu trúc dữ liệu mặc định trong JavaScript sẽ giúp bạn xây dựng hàng đợi, danh sách được liên kết, biểu đồ, cây và các triển khai nâng cao hơn. Nâng cao kỹ năng mã hóa và hiểu biết về cấu trúc dữ liệu và thuật toán trong JavaScript với hướng dẫn nhanh chóng và dễ dàng này

Khi đã thành thạo các cấu trúc dữ liệu đó, bạn sẽ tìm hiểu cách xây dựng các thuật toán của riêng mình trong JavaScript, từ các thuật toán số học đơn giản đến các thuật toán sắp xếp và tìm kiếm phức tạp hơn

Có nhiều cách triển khai cấu trúc dữ liệu và thuật toán khác nhau trên các ngôn ngữ lập trình. Bài viết này tập trung vào việc giúp bạn tìm hiểu cấu trúc dữ liệu và thuật toán sử dụng JavaScript

Các loại cấu trúc dữ liệu cơ bản bằng JavaScript

JavaScript là ngôn ngữ lập trình xây dựng web. Hầu hết các ứng dụng web chạy trên JavaScript hoặc các khung được xây dựng trên đó, từ thư viện JQuery gần như phổ biến đến React. js/Nút. js hiện cung cấp năng lượng cho các công cụ phức tạp trên web. Có ít nhất 70 triệu trang web sử dụng JQuery trên toàn thế giới

JavaScript được gõ lỏng lẻo và năng động. Có bảy cái gọi là kiểu dữ liệu nguyên thủy mặc định mà chúng ta có thể định nghĩa là các kiểu dữ liệu khác nhau. Các loại dữ liệu này không có các biến được liên kết với chúng—bất kỳ biến JavaScript nào cũng có thể được thay đổi nhanh chóng giữa loại này hay loại khác. Chúng tạo thành cơ sở của các cấu trúc dữ liệu tĩnh trong JavaScript

Loại dữ liệu nguyên thủy JavaScript 1. Booleans

Boolean là một biến logic nhị phân trong JavaScript. Nó sẽ trả vềTrueorFalse, tùy thuộc vào một số điều kiện cơ bản. Booleans thường hữu ích khi làm việc với các trạng thái If hoặc Vòng lặp For/While. họ có thể xác định trạng thái nơi một cái gì đó tiếp tục thực thi hay không

Loại dữ liệu nguyên thủy JavaScript 2. Dây

Các chuỗi trong JavaScript rất giống với các chuỗi trong các ngôn ngữ lập trình khác ngoại trừ một ngoại lệ. một khi được tạo, chuỗi không thể sửa đổi. Chúng có nghĩa là để đại diện cho thông tin văn bản. “bàn đạp” là một chuỗi

Loại dữ liệu nguyên thủy JavaScript 3. Vô giá trị

Biến null có nghĩa là chúng ta đang chỉ vào thứ gì đó không tồn tại hoặc không hợp lệ. Điều này thường được thực hiện có chủ ý, chẳng hạn như để đánh dấu một luồng không hợp lệ trong thuật toán của chúng tôi

Loại dữ liệu nguyên thủy JavaScript 4. Chưa xác định

Một biến không xác định được tự động gán cho bất kỳ biến nào chúng tôi xác định và vừa được khai báo. Ví dụ: nếu chúng ta định nghĩa “var springboard” trong JavaScript mà không có bất kỳ khai báo nào về biến đó là gì, nó sẽ trả về dưới dạng kiểu dữ liệu không xác định

Loại dữ liệu nguyên thủy JavaScript 5. số

Số là một trong hai cách JavaScript lưu trữ chuỗi số nguyên. Sử dụng 64 bit, nó có thể trình bày các số từ 2 đến lũy thừa 53, theo cả kiểu âm và dương. Ngoài ra còn có ba giá trị không nguyên có thể được biểu diễn bằng Số. vô cực dương, vô cực âm và NaN, đại diện cho “Không phải là số. ” Có một phạm vi nhất định mà số nguyên trong JavaScript không an toàn và sẽ trở thành một giá trị gần đúng—điều này có thể được kiểm tra bằng cách sử dụng Số. phương thức isSafeInteger(). Đó là lý do tại sao chúng ta có kiểu dữ liệu thứ hai liên quan đến số nguyên trong JavaScript. BigInt

Kiểu dữ liệu nguyên thủy JavaScript 6. BigInt

Loại số BigInt cho phép chúng ta biểu diễn các số nguyên vượt quá giới hạn an toàn của Số—vượt quá 2 mũ 53. Loại dữ liệu này cho phép chúng tôi làm việc với số lượng rất lớn trong JavaScript. Các biến BigInt hoạt động hơi giống các biến Số, nhưng chúng không thể được sử dụng để làm việc với các biến Số. Lỗi TypeError sẽ xuất hiện nếu bạn cố gắng kết hợp các biến BigInt và Numbers

Kiểu dữ liệu nguyên thủy JavaScript 7. Biểu tượng

Các ký hiệu được sử dụng để tạo các mã định danh duy nhất cho các đối tượng nhưng có thể được sử dụng như một cách để kích hoạt các loại dữ liệu không rõ ràng khác nhau hoặc để phục vụ như một mã định danh duy nhất nói chung

Làm quen với các sinh viên kỹ thuật phần mềm khác

Tôi có thể sử dụng JavaScript cho cấu trúc dữ liệu và thuật toán không?

Dave McConeghy

Sinh viên theo dõi nghề nghiệp kỹ thuật phần mềm tại Springboard

Đọc truyện

Tôi có thể sử dụng JavaScript cho cấu trúc dữ liệu và thuật toán không?

Julia Ayres

Kỹ sư phần mềm tại Northspyre

Đọc truyện

Tôi có thể sử dụng JavaScript cho cấu trúc dữ liệu và thuật toán không?

Kristy Chu

Kỹ sư phần mềm tại FloQast

Đọc truyện

Triển khai cấu trúc dữ liệu bằng JavaScript

Với các kiểu dữ liệu nguyên thủy được xác định này, giờ đây chúng ta có thể làm việc trên một số triển khai cấu trúc dữ liệu dành riêng cho JavaScript. Cấu trúc dữ liệu là một cách lưu trữ và tổ chức dữ liệu gốc mà chúng ta vừa mô tả để chúng có thể được truy cập và sử dụng một cách hiệu quả trong các thuật toán

Cấu trúc dữ liệu JavaScript Loại 1. Mảng

Mảng là dãy các kiểu dữ liệu nguyên thủy, tương tự như một danh sách. Trong JavaScript, có hai cách triển khai hướng đối tượng phổ biến của các đối tượng giống như mảng. ngăn xếp và hàng đợi, cũng như đối tượng mảng được xác định đặc biệt. Ngăn xếp và hàng đợi khác với định nghĩa chính xác của mảng trong các ngôn ngữ lập trình khác bởi cách các đối tượng được thêm vào hoặc loại bỏ

Hàng đợi là FIFO (vào trước, ra trước) trong khi ngăn xếp là LIFO (vào sau, ra trước). Bạn có thể coi hàng đợi là một hàng người đi vào cửa hàng, trong đó người đầu tiên trong hàng vào cửa hàng và một ngăn xếp là một chồng tệp, trong đó người cuối cùng được đặt vào ngăn xếp là người đầu tiên ra ngoài.

Cả hàng đợi và ngăn xếp đều mang lại cơ hội hiển thị mọi kiểu dữ liệu được lưu trữ trong mảng và để cắt và “nhìn trộm” các phần tử cụ thể. Điều này cũng đúng với kiểu mảng JavaScript, là một đối tượng được xác định đặc biệt trong JavaScript

Chúng ta có thể làm việc với mảng để xác định danh sách các kiểu dữ liệu, sau đó lập chỉ mục và lọc cho kiểu dữ liệu đầu tiên (theo định nghĩa, mảng không được lập chỉ mục, nghĩa là một lát [0] cho chỉ mục sẽ trả về mục đầu tiên, v.v.

Cấu trúc dữ liệu JavaScript loại 2. Các nút được liên kết

Các nút được liên kết bao gồm nhiều loại đối tượng giống như mảng khác nhau vì chúng lưu trữ các kiểu dữ liệu theo trình tự. Sự khác biệt quan trọng là thay vì trỏ tới các chỉ mục như chúng ta đã thấy với ví dụ về mảng khi một kiểu dữ liệu được đặt trong một mảng, các nút được liên kết giữ các con trỏ tới các đối tượng khác. Vì vậy, để theo dõi các nút được liên kết, bạn sẽ phải duyệt qua các đối tượng danh sách khác nhau bằng cách sử dụng từng đối tượng làm tham chiếu để chuyển sang đối tượng tiếp theo. Bạn bắt đầu từ phần đầu và sau đó đi đến phần đuôi thay vì gọi một chỉ mục chính

Có nhiều loại, từ danh sách liên kết đơn, danh sách liên kết kép (liên kết phần đuôi với phần đầu, cho phép chúng ta di chuyển qua lại giữa các loại dữ liệu khác nhau) cho đến dạng cây và biểu đồ. Cây kết nối cha mẹ với nhiều nút con trái ngược với danh sách được liên kết, kết nối một cha mẹ với một con. Đồ thị cho phép kết nối nhiều nút cha với nhiều nút con. Đây là một triển khai của một danh sách được liên kết

Cấu trúc dữ liệu JavaScript Loại 3. Bảng băm

Bảng băm là một cấu trúc dữ liệu giống như từ điển, trong đó các khóa được ghép nối với các giá trị. Các bảng băm rất tốt cho việc truy xuất và sửa đổi dữ liệu nhanh chóng, mặc dù các đối tượng giống như mảng và danh sách ở trên sẽ tốt hơn cho việc lưu trữ. Tuy nhiên, đặc biệt là với sự phát triển bùng nổ của dữ liệu, các bảng băm đã trở nên gần như phổ biến. Ví dụ: các cơ sở dữ liệu NoSQL phổ biến được sử dụng trên web như MongoDB và Redis là các bảng băm phân tán và các kho lưu trữ khóa/giá trị. Đây là một ví dụ về triển khai bảng băm trong JavaScript

Triển khai các thuật toán bằng JavaScript

Bây giờ chúng ta đã hoàn thành việc tìm hiểu các kiểu dữ liệu và cấu trúc dữ liệu mà JavaScript bao gồm, chúng ta sẽ tìm hiểu các thuật toán phổ biến khác nhau và cách triển khai độc đáo của chúng trong JavaScript

Thuật toán JavaScript 1. Thuật toán nhân đôi (Thuật toán số học)

Hãy bắt đầu với một hàm số học đơn giản, cho chúng ta biết cách thực hiện một chuỗi các bước trong JavaScript. Chúng tôi sẽ lấy thứ gì đó và nhân nó với hai, sau đó đăng nhập vào bảng điều khiển của chúng tôi. Điều này yêu cầu chúng ta xác định một biến và hàm đơn giản

Cuối cùng, lưu ý rằng khi chúng tôi thử chuyển một kiểu dữ liệu chuỗi cho thuật toán này, kết quả là một kiểu dữ liệu NaN (không phải số)

Thuật toán JavaScript 2. QuickSort (Thuật toán sắp xếp)

Một vấn đề phổ biến với các thuật toán lập trình là làm thế nào để sắp xếp các mảng giá trị sao cho chúng có thứ tự logic nào đó, chẳng hạn như từ số nguyên thấp nhất đến số nguyên cao nhất trong một dãy số. QuickSort là một thuật toán sắp xếp có thể trợ giúp việc này. Bằng cách sử dụng một trục và đi qua các tập hợp con của một mảng, chúng ta có thể từ từ sắp xếp mọi phần tử nhỏ hơn trục bên trái của nó

Đây là cách triển khai QuickSort trong JavaScript

Thuật toán JavaScript 3. Bước tìm kiếm (Thuật toán tìm kiếm)

Bây giờ chúng ta đã sắp xếp một mảng, một loại thuật toán lập trình phổ biến khác sẽ cố gắng giải quyết vấn đề tìm kiếm nếu một giá trị tồn tại trong một mảng. Sử dụng tìm kiếm nhảy, chúng tôi mong muốn tách ra các tập hợp con của mảng sao cho nó sẽ hiệu quả hơn tìm kiếm nhị phân khi lọc qua các mảng đã được sắp xếp. Chúng tôi tìm kiếm một khoảng gồm các phần tử lớn hơn và nhỏ hơn đã biết trong đó giá trị tìm kiếm của chúng tôi có thể là

Springboard giúp bạn tìm hiểu cấu trúc dữ liệu và thuật toán bằng JavaScript như thế nào?

Bootcamp trực tuyến về kỹ thuật phần mềm của Springboard được thiết kế để giúp bạn có việc làm trong vòng vài tháng sau khi hoàn thành. (Nếu bạn muốn tìm hiểu chính xác kỹ sư phần mềm làm gì, hãy xem bài đăng của chúng tôi tại đây. )

Lộ trình nghề nghiệp Kỹ sư phần mềm được thiết kế dành cho những sinh viên tương lai có năng khiếu lập trình cơ bản và kiến ​​thức về JavaScript cũng như các kỹ năng giao tiếp và giải quyết vấn đề

Chương trình giảng dạy theo nhịp độ riêng, được thiết kế bởi người hướng dẫn hàng đầu Colt Steele, sẽ giúp bạn thành thạo việc phát triển web, công cụ dành cho nhà phát triển tiêu chuẩn từ Git đến Terminal đến Github, kiến ​​thức cơ bản về SQL và cấu trúc dữ liệu cũng như các thuật toán trong cả Python và JavaScript. Bạn sẽ học

  • Thao tác JavaScript và DOM trung gian
  • Cách thức hoạt động của web, AJAX và jQuery
  • JavaScript hiện đại và thử nghiệm
  • Nút. js và Express. js cơ bản và cách xây dựng các ứng dụng full-stack với cả hai
  • Phản ứng. js và Redux
  • Cấu trúc dữ liệu và thuật toán trong JavaScript

Vì bạn đang ở đây…
Bạn quan tâm đến sự nghiệp trong lĩnh vực công nghệ phần mềm? . Chúng tôi giúp mọi người thực hiện chuyển đổi mỗi ngày (chỉ cần xem các đánh giá của chúng tôi). Bạn cũng có thể làm được.

Tôi có thể sử dụng JavaScript cho cấu trúc dữ liệu và thuật toán không?

Giới thiệu về Sakshi Gupta

Sakshi là Phó tổng biên tập cấp cao tại Springboard. Cô ấy là một người đam mê công nghệ, thích đọc và viết về công nghệ mới nổi. Cô là một nhà tiếp thị nội dung và có kinh nghiệm làm việc tại thị trường Ấn Độ và Hoa Kỳ

Tải xuống hướng dẫn về lương kỹ sư phần mềm năm 2022 của chúng tôi

Xem xét kỹ hơn các yếu tố ảnh hưởng đến bồi thường trong công nghệ phần mềm. Dẫn đầu đối thủ với các mẹo và thủ thuật phỏng vấn xin việc, cùng với lời khuyên về cách giành được vai trò hoàn hảo

Tôi có nên sử dụng JavaScript cho cấu trúc dữ liệu và thuật toán không?

JavaScript rất phổ biến và JavaScript thích hợp để tìm hiểu về cấu trúc dữ liệu vì đây là ngôn ngữ chức năng . Ngoài ra, đây có thể là một cách rất thú vị để học một cái gì đó mới, vì nó rất khác (và dễ dàng hơn) so với việc học về cấu trúc dữ liệu với một ngôn ngữ tiêu chuẩn như C hoặc Java.

Ngôn ngữ nào tốt cho cấu trúc dữ liệu và thuật toán?

C++. C++ là ngôn ngữ lập trình hướng đối tượng, lập trình mệnh lệnh và ngôn ngữ lập trình chung. Nó được sử dụng trong mọi tổ chức để giải quyết các vấn đề dựa trên cấu trúc dữ liệu và thuật toán trong một cuộc phỏng vấn viết mã.