Cấu trúc dữ liệu và giải thuật trong sách python

Tiết lộ. Bài đăng này bao gồm các liên kết liên kết;

Các thuật toán là ngôn ngữ bất khả tri và bất kỳ lập trình viên nào xứng đáng với muối của họ đều có thể chuyển đổi chúng thành mã bằng ngôn ngữ lập trình mà họ chọn, nhưng đồng thời, sẽ dễ học hơn nếu các ví dụ được trình bày bằng ngôn ngữ lập trình mà bạn chọn

Thật không may, tôi đã gặp một số lập trình viên THỰC SỰ giỏi các ngôn ngữ lập trình như Java hoặc Python như biết các chi tiết nhỏ về API và sự phức tạp của ngôn ngữ nhưng lại có kiến ​​thức rất kém về các thuật toán cơ bản và Cấu trúc dữ liệu.

Chỉ cần yêu cầu họ triển khai bất kỳ thuật toán sắp xếp phổ biến nào như sắp xếp nhanh hoặc sắp xếp hợp nhất và chúng sẽ sụp đổ. Nếu bạn muốn họ biết các thuật toán nâng cao và phức tạp hơn như thuật toán Chuỗi, thuật toán đồ thị, duyệt cây hoặc thuật toán tham lam, hãy sẵn sàng kiểm tra Phỏng vấn, nếu không, bạn có thể gặp một số bất ngờ

Một lần, tôi tình cờ gặp một ứng cử viên rất sáng giá cho vai trò nhà phát triển cấp cao cốt lõi của Java, anh ấy rất xuất sắc về Java, đa luồng nhưng kỹ năng thuật toán và cấu trúc dữ liệu của anh ấy thực sự kém so với kinh nghiệm và năng lực của anh ấy.

Khi tôi hỏi anh ấy, tại sao anh ấy không dành thời gian chải kỹ thuật toán và kỹ năng giải quyết vấn đề của mình trước khi đến phỏng vấn? . Tôi chưa bao giờ sử dụng chúng trong 6 năm sự nghiệp phát triển Java của mình"

Anh ấy đã đúng một chút, bạn không cần triển khai bảng băm trong Java, bạn luôn có thể sử dụng lớp HashMap hoặc Từ điển trong Python cho ý nghĩa đó nhưng anh ấy đã không nhận ra thuật toán và cấu trúc dữ liệu cải tiến dài hạn hơn trong việc cải thiện lập trình

Các thuật toán là công cụ để phát triển các kỹ năng giải quyết lập trình và ý thức mã hóa, cần thiết để chuyển đổi yêu cầu của người dùng thành dòng mã còn được gọi là chương trình máy tính

Họ cũng ở khắp mọi nơi, nếu bạn sử dụng Facebook, bạn có bao giờ nghĩ làm thế nào họ tìm thấy bạn bè của bạn dễ dàng như vậy không?

10 cuốn sách hàng đầu về cấu trúc dữ liệu và thuật toán về Java, Python, C và C ++ dành cho người mới bắt đầu và lập trình viên có kinh nghiệm

Một lời khuyên vàng khác cho những người nghĩ rằng Thuật toán là Cấu trúc dữ liệu dành cho những người muốn làm việc ở Amazon, Google, Facebook, Intel hoặc Microsoft, hãy nhớ rằng đó là kỹ năng duy nhất trường tồn với thời gian, tất nhiên là ngoài lập trình UNIX, SQL và C

Ngôn ngữ lập trình đến rồi đi, nhưng cốt lõi của lập trình, đó là thuật toán và cấu trúc dữ liệu thì không thay đổi

Nếu bạn biết cách hoạt động của bảng băm thì bạn có thể sử dụng triển khai của chúng trong bất kỳ ngôn ngữ lập trình nào như HashMap từ JDK, Dictionary in Python hoặc HashMap từ thư viện tăng cường C++

Vì vậy, nếu bạn thực sự nghiêm túc về lập trình và nhận ra rằng các thuật toán và cấu trúc dữ liệu không phải là tùy chọn, thì đây là một số cuốn sách tuyệt vời để tìm hiểu các thuật toán

Một số bạn có thể đã đọc chúng trước đây nhưng chúng đáng để đọc lại. Nhân tiện, nếu bạn mua một cuốn sách bằng các liên kết trong bài viết này, tôi cũng sẽ được trả tiền

1. Giới thiệu về thuật toán của Thomas H. Corman
Đây là một trong những cuốn sách phổ biến nhất về thuật toán, nhưng lưu ý rằng nó chứa rất nhiều lý thuyết. Phiên bản hiện tại của cuốn sách này là Phiên bản thứ 3 và tôi thực sự khuyên mọi lập trình viên nên có cuốn sách này trên giá sách của họ, nhưng chỉ để đọc ngắn và tham khảo.

Không thể đọc hết cuốn sách này trong một lần và một số bạn cũng có thể cảm thấy khó đọc, nhưng đừng lo, bạn có thể kết hợp việc học của mình với một khóa học trực tuyến như Cấu trúc dữ liệu và thuật toán. Deep Dive Sử dụng Java cùng với cuốn sách này

Điều này giống như điều tốt nhất của cả hai thế giới, bạn học Algrotihsm cơ bản một cách nhanh chóng trong một khóa học trực tuyến và sau đó bạn củng cố thêm kiến ​​thức đó bằng cách xem qua cuốn sách, điều này sẽ có ý nghĩa hơn với bạn khi bạn đã trải qua một khóa học rồi

Một lý do khác khiến tôi giới thiệu cuốn sách này như một trong những cuốn sách đầu tiên về thuật toán vì ngôn ngữ của nó không thể tin được và kèm theo các bài giảng tại đây

2. Các thuật toán của Robert Sedgewick & Kevin Wayne
Đây là tài nguyên ưa thích của tôi về thuật toán trong một thời gian dài, nó vẫn vậy nhưng bây giờ tôi ít thấy nó hơn trước. Bạn sẽ học được nhiều kiến ​​thức cơ bản về thuật toán và ngày nay thậm chí các phiên bản cụ thể của cuốn sách này cũng có sẵn cho các ngôn ngữ lập trình khác nhau như Java và C++.

Ngoài ra còn có một vài khóa học trực tuyến Coursera miễn phí cho cuốn sách này, Thuật toán Phần 1 và Thuật toán Phần 2, bổ sung độc đáo cho cuốn sách này. Nó là tuyệt vời. Đó cũng là đề xuất hàng đầu của tôi dành cho các lập trình viên Java để học các thuật toán

Trong khi trên Coursera, nó cũng có một số bộ sưu tập tốt nhất về Cấu trúc dữ liệu và các khóa học thuật toán bao gồm từng chủ đề quan trọng. Chúng được nhóm lại với nhau dưới dạng Chuyên môn về Thuật toán của Coursera. Nếu bạn muốn tìm hiểu sâu về Thuật toán, đó là nơi tôi khuyên bạn nên đến

Dù bạn có tin hay không nhưng nếu bạn đã biết một ngôn ngữ lập trình thì việc xem một ví dụ về thuật toán trên ngôn ngữ lập trình đó hơn các ngôn ngữ lập trình khác cũng giúp giảm thời gian học tập. *Bạn cũng có thể đọc Ấn bản thứ 4 của cuốn sách này trực tuyến miễn phí [*tại đây][http. // algs4. cs. Princeton. edu/nhà/]

3. Sổ tay thiết kế thuật toán của Steve S. Skiena
Đây là một cuốn sách xuất sắc khác về thuật toán máy tính đề cập đến rất nhiều thuật toán cũng như rất nhiều mã. Điều tôi đặc biệt thích ở cuốn sách là nơi anh ấy thực sự đưa ra các ví dụ về nơi anh ấy đã sử dụng các thuật toán [hoặc các biến thể của chúng] trong thực tế; .

Mã này bằng C, nhưng nó không bí truyền lắm và rất dễ làm theo. Tôi cũng đã ra trường được một thời gian và điều này giúp tôi tiếp cận khá nhanh với một số thuật toán đồ thị. Tôi đã có cuốn sách này gần 10 năm rồi và thỉnh thoảng vẫn xem nó

4. Tóm tắt thuật toán
O'Reilly's Algorithms, in a Nutshell, là một cuốn sách rất hay để học các thuật toán lập trình, đặc biệt là cho các lập trình viên Java. Nó mô tả các thuật toán tập trung vào việc triển khai chúng và không dùng toán học nặng nề được sử dụng trong các sách cổ điển về thuật toán.

Tất cả các thuật toán được trình bày ở dạng mẫu, với động cơ sử dụng chúng, hình ảnh và mã giả cung cấp tổng quan cấp cao và mã làm việc [bằng C, C++, Java và Ruby]

Họ cũng có điểm chuẩn để cung cấp bằng chứng về hiệu suất lý thuyết của các thuật toán. Tóm lại, một trong những cuốn sách hay nhất để học thuật toán dành cho lập trình viên

5. Algorithm for Interviews\
Algorithm for Interview của Adnan Aziz là cuốn sách phải đọc về thuật toán, được viết theo cách ghi nhớ cuộc phỏng vấn lập trình.

Bản thân trang bìa cho thấy cuốn sách có thể thú vị như thế nào nếu bạn nhìn kỹ vào hình ảnh trên trang bìa được vẽ bằng hình thu nhỏ của những người nổi tiếng và cuốn sách giải thích cách bạn có thể phát triển các thuật toán như vậy. Thật thú vị phải không?

Chà, tôi thích cuốn sách này vì cách tiếp cận và mục tiêu của nó, đôi khi học cùng một thứ với các đối tượng khác nhau giúp hiểu nó tốt hơn

6. Algorithm Design của Kleinberg & Tardos\
Đây thực sự là cuốn sách hay thứ hai về Algorithms sau cuốn Introduction to Algorithms của Thomas Cormon. Nó không thực sự là phần giới thiệu về thuật toán và phù hợp hơn với các lập trình viên có kinh nghiệm.

Nó nói thêm về thiết kế thuật toán cho các nhà phát triển quen thuộc với các thuật toán cơ bản. Bạn nên bắt đầu với cuốn sách Introduction of Algorithm hoặc Algorithms của Robert Sedgewick và sau đó tiếp tục với cuốn sách này

Nhân tiện, nếu thích, bạn cũng có thể kết hợp việc học của mình với một khóa học trực tuyến như Thuật toán và Cấu trúc dữ liệu --- Phần 1 và 2 trên Pluralsight. Đây là một khóa học hay để làm quen với các Thuật toán và Cấu trúc dữ liệu thiết yếu trước khi bạn chuyển sang chủ đề Thiết kế thuật toán

7. Giới thiệu về thuật toán. Cách tiếp cận sáng tạo
Giới thiệu về thuật toán. Phương pháp tiếp cận sáng tạo của Udi Manber là một cuốn sách tuyệt vời khác để tự học vì nó có hàng trăm vấn đề và ví dụ.

Nó được thiết kế để nâng cao khả năng giải quyết vấn đề của ứng viên và sự hiểu biết về các nguyên tắc đằng sau thiết kế thuật toán, điều này sẽ giúp bạn phát triển các kỹ năng Giải quyết vấn đề và Viết mã của mình

8. Cấu trúc dữ liệu và thuật toán. Aho, Ullman & Hopcroft
Một cuốn sách giới thiệu hay khác về thuật toán và cấu trúc dữ liệu. Một cuốn sách đáng yêu và rõ ràng và bất kỳ lập trình viên nào không thích sử dụng nhiều Toán học trong thuật toán sẽ đánh giá cao cuốn sách này.

Nhân tiện, nếu bạn thấy cuốn sách này khó đọc, đó là điều mà một số độc giả của tôi phàn nàn, thì bạn cũng có thể xem qua Grokking Algorithms của Aditya Bhargava, một trong những cuốn sách dễ dàng và thú vị nhất về Thuật toán dành cho người mới bắt đầu

9. Thiết kế và phân tích thuật toán
Đây là một công cụ nấu ăn tuyệt vời khác về thuật toán máy tính và xứng đáng có một vị trí trên kệ của lập trình viên. Khi bạn đã hoàn thành [Khóa học chuyên môn về thuật toán]https. // khóa học. pxf. io/c/3294490/1164545/14726?u=https%3A%2F%2Fwww. khóa học. org%2Fspecializations%2Fdata-structures-algorithms] và một trong những cuốn sách giới thiệu, bạn có thể đọc cuốn sách này để nghiên cứu các chủ đề nâng cao trong thuật toán.

10. Thuật toán Python. Nắm vững các thuật toán cơ bản bằng ngôn ngữ Python\
Cuốn sách này được thiết kế dành cho các lập trình viên Python. Magnus Lie Hetland cũng là tác giả của một trong những cuốn sách giới thiệu phổ biến về Python, Beginning Python.

Như tôi đã nói rằng thuật toán không phụ thuộc vào ngôn ngữ, học thuật toán python không có nghĩa là bạn không thể triển khai chúng trong Java hay C++, nhưng nếu bạn đã biết Python thì đây là cuốn sách tuyệt vời để học thuật toán máy tính

Cuốn sách này cũng tập trung nhiều vào Thuật toán đồ thị, rất hữu ích trong việc giải quyết các vấn đề trong thế giới thực

11. Groking Algorithms\
Đây là cuốn sách không nằm trong bộ sách gốc khi tôi xuất bản bài viết này trên blog của mình nhưng sau khi đọc cuốn sách này, tôi nên đưa nó vào danh sách vì tính đơn giản của nó. Đó là một trong những cuốn sách hay nhất mà tôi đã đọc về thuật toán, đặc biệt là từ quan điểm của người mới bắt đầu.

Nó sử dụng các ví dụ hiện đại như cách Facebook lưu trữ tên người dùng để có thể tìm kiếm dễ dàng khi đăng nhập. Những ví dụ này cộng hưởng tốt hơn với người mới bắt đầu và giúp họ nắm bắt khái niệm như tại sao mảng là lựa chọn tốt hơn so với danh sách được liên kết để tìm kiếm

Nền tảng về Mỹ thuật của Aditya cũng làm cho cuốn sách này trở thành một nguồn học tập trực quan. Bạn sẽ tìm thấy rất nhiều sơ đồ thú vị, chi tiết trong cuốn sách này giúp bạn học khái niệm này tốt hơn và nhanh hơn

Đây là một sơ đồ đẹp cân nhắc cuốn sách này với cuốn sách thuật toán khác được đề cập trong danh sách này

Tóm lại, một trong những cuốn sách Thuật toán hay nhất dành cho bất kỳ lập trình viên mới bắt đầu nào. Nó không bao gồm tất cả các cấu trúc dữ liệu và thuật toán nhưng bất cứ điều gì nó bao gồm, nó sẽ giải thích rõ về chúng

Đó là tất cả về 10 cuốn sách Algorithm mọi lập trình viên nên đọc. Tôi đồng ý rằng thuật toán là một chủ đề phức tạp và không dễ để hiểu chúng trong một lần đọc, trong trường hợp đó, tôi khuyên bạn nên đọc cùng một cuốn sách hai lần

Ngoài ra, chỉ đọc thôi là chưa đủ, hãy thử thực hiện chúng bằng ngôn ngữ lập trình mà bạn yêu thích. Việc viết ArrayList, HashMap hoặc triển khai Bản đồ dựa trên cây của riêng bạn không gây hại gì

Hiệu quả của Thuật toán học tập không thể nhìn thấy ngay lập tức nhưng bạn sẽ nhận thấy sự cải thiện tinh tế trong tư duy, cách xây dựng giải pháp và chất lượng mã của mình theo thời gian

Nhân tiện, nếu bạn quan tâm đến một khóa học trực tuyến về thuật toán, tôi khuyên bạn nên xem Cấu trúc dữ liệu và thuật toán. Tìm hiểu sâu bằng cách sử dụng Java trên Udemy. Đây không phải là khóa học miễn phí nhưng bạn có thể mua với giá chỉ từ dưới 10 đô la đến 15 đô la trong một số đợt giảm giá chớp nhoáng của Udemy, diễn ra vài ngày một lần

Các bài viết về thuật toán và cấu trúc dữ liệu khác* bạn có thể thích

  • 5 khóa học miễn phí để tìm hiểu thuật toán và cấu trúc dữ liệu
  • Hơn 50 bài toán về cấu trúc dữ liệu và giải thuật dành cho lập trình viên
  • 10 khóa học về cấu trúc dữ liệu và thuật toán để bẻ khóa các cuộc phỏng vấn lập trình
  • Top 5 cuốn sách về cấu trúc dữ liệu và giải thuật
  • 10 Điều Lập Trình Viên Java Nên Học
  • tín dụng hình ảnh và tài nguyên tốt để hiểu lý thuyết đồ thị và thuật toán
  • Hơn 30 vấn đề mã hóa dựa trên mảng từ các cuộc phỏng vấn
  • Hơn 30 vấn đề mã hóa dựa trên danh sách được liên kết từ các cuộc phỏng vấn
  • Hơn 75 vấn đề viết mã từ các cuộc phỏng vấn để thực hành
  • Danh sách các khóa học miễn phí yêu thích của tôi để tìm hiểu sâu về Thuật toán [freeCodeCamp]
  • Các khóa học yêu thích của tôi để học Python cho người mới bắt đầu

Cảm ơn bạn đã đọc bài viết này, Nếu bạn thích danh sách sách này thì bạn cũng sẽ thích bộ sưu tập 10 cuốn sách mà mọi lập trình viên nên đọc của tôi, đó là danh sách sách về lập trình, mã hóa, kỹ thuật phát triển phần mềm và các phương pháp hay nhất, máy tính, lập trình

Cuối cùng, có hai loại lập trình viên, một người hiểu thuật toán và một người không

Bạn không cần phải đọc tất cả các cuốn sách để trở thành nhà vô địch về Cấu trúc dữ liệu và Thuật toán, hãy chọn cuốn sách tùy thuộc vào ngôn ngữ lập trình yêu thích và kinh nghiệm của bạn. đối với những người hoàn toàn mới bắt đầu, thuật toán Grokking tốt hơn nhưng để có phạm vi bao quát toàn diện hơn Giới thiệu về thuật toán thì tốt. Đối với các cuộc phỏng vấn khó khăn như Google và Facebook, Algorithms for Interviews và Algorithm Desing của Steve Skiena là lựa chọn tốt hơn

P. S. --- Nếu bạn thích các khóa học trực tuyến hơn sách hoặc bạn muốn học cả sách và các khóa học trực tuyến thì bạn cũng có thể xem danh sách 5 khóa học trực tuyến hàng đầu của tôi để học cấu trúc dữ liệu và thuật toán. Nó bao gồm các khóa học về Java, Python và JavaScript để dễ học

Cuốn sách tốt nhất để học cấu trúc dữ liệu và thuật toán Python là gì?

Thuật toán Grokking . Cuốn sách này bao gồm những điều cơ bản của các chủ đề như Thuật toán tham lam, Lập trình động, v.v.

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

Khóa học thuật toán và cấu trúc dữ liệu hoàn chỉnh bằng Python . Đây là một trong những khóa học hàng đầu để học Cấu trúc dữ liệu và thuật toán Các khóa học về Python vào năm 2022 từ Udemy. Bạn sẽ học cấu trúc dữ liệu và thuật toán từ đầu và nó cũng đi kèm với hơn 100 vấn đề mã hóa cho các cuộc phỏng vấn.

Tôi có thể học cấu trúc dữ liệu và giải thuật bằng Python ở đâu?

Tóm lại, đây là 10 khóa học phổ biến nhất về cấu trúc dữ liệu python của chúng tôi .
Cấu trúc dữ liệu Python. Đại học Michigan
Cấu trúc dữ liệu Python. Mạng dự án Coursera
Cấu trúc dữ liệu và thuật toán. Đại học California San Diego

Có bao nhiêu cấu trúc dữ liệu và thuật toán trong Python?

bốn loại cấu trúc dữ liệu tích hợp sẵn trong Python . danh sách, bộ dữ liệu, bộ và từ điển. Danh sách được xác định bằng cách sử dụng dấu ngoặc vuông và giữ dữ liệu được phân tách bằng dấu phẩy. Danh sách có thể thay đổi và sắp xếp. Nó có thể chứa hỗn hợp các loại dữ liệu khác nhau.

Chủ Đề