Các thuật toán là ngôn từ bất khả tri và bất kỳ lập trình viên nào xứng danh là muối bột của họ đều phải sở hữu thể đổi khác chúng thành mã bằng ngôn từ lập trình mà người ta lựa 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 về các ngôn ngữ thiết kế như Java hoặc Python- hệt như biết các chi tiết bé dại về API và sự tinh vi của ngữ điệu nhưng lại có kiến ​​thức nhát về những thuật toán và cấu trúc dữ liệu cơ bản.

Bạn đang xem: Sách hay về cấu trúc dữ liệu và giải thuật

Chỉ buộc phải yêu ước họ thực hiện bất kỳ thuật toán chuẩn bị xếp phổ biến nào như quicksort hoặc sắp xếp hợp duy nhất , và chúng sẽ rã rã. Nếu khách hàng mong ngóng họ biết những thuật toán cao cấp và phức tạp hơn hoàn toàn như thuật toán Chuỗi , thuật toán vật dụng thị , thuật toán cẩn thận cây hoặc thuật toán tham lam, hãy chuẩn bị kiểm tra các Bài rộp vấn; trường hợp không, chúng ta cũng có thể kết thúc với một số bất ngờ.

Một lần, tôi tình cờ chạm mặt một ứng cử viên xuất sắc mang lại vai trò đơn vị phát triển thời thượng Java cốt lõi, anh ấy hết sức xuất dung nhan trong vi xử lý core Java , nhiều luồng tuy nhiên kỹ năng cấu tạo dữ liệu với thuật toán của anh ý ấy thực sự kém so với tay nghề kinh nghiệm và khoảng cỡ.

Khi tôi hỏi anh ấy tại sao anh ấy không dành thời gian reviews thuật toán và kỹ năng xử lý vấn đề của mình trước khi đến phỏng vấn? Lời gượng nhẹ của anh ấy là, “những thuật toán kia chỉ giành riêng cho các cuộc chất vấn và không lúc nào thực sự được áp dụng trong thiết kế thực tế. Tôi chưa bao giờ sử dụng bọn chúng trong sáu năm sự nghiệp cải cách và phát triển Java của bản thân mình ” .

Anh ấy đã đúng phần nào; bạn không nhất thiết phải triển khai bảng băm trong Java, các bạn luôn hoàn toàn có thể sử dụng HashMap lớp hoặc Dictionary bằng Python cho chân thành và ý nghĩa đó, nhưng mà anh ấy đang không phân biệt thuật toán và cấu trúc dữ liệu đổi mới lâu dài thêm hơn trong việc nâng cao kỹ năng lập trình sẵn .

Thuật toán là công cụ trở nên tân tiến kỹ năng xử lý lập trình và cảm xúc mã hóa, được yêu ước để thay đổi yêu ước của người tiêu dùng thành mẫu mã nói một cách khác là chương trình sản phẩm công nghệ tính.

Họ cũng sinh hoạt xung quanh, nếu như khách hàng sử dụng Facebook thiết kế , bạn đã khi nào nghĩ đến sự việc họ search thấy bằng hữu của các bạn nhanh ra sao chưa? Hoặc làm rứa nào nhằm Blog technology Netflix khuyến nghị bộ phim bạn có nhu cầu xem? Đó chỉ là 1 vài ví dụ như về Thuật toán học tập máy , đang gửi Thuật toán lên một lever khác.

10 cuốn sách về kết cấu dữ liệu cùng thuật toán - đề xuất đọc cho những nhà phạt triển

Một mẹo đá quý khác cho đầy đủ ai cho là Thuật toán là kết cấu dữ liệu giành cho những ai muốn thao tác làm việc trong Amazon , Google , Facebook, hãng sản xuất intel hoặc Microsoft ; Hãy đừng quên nó là kĩ năng duy nhất vượt thời gian, tất nhiên, quanh đó UNIX , SQL và C.

Ngôn ngữ lập trình mang đến và đi, nhưng chủ đạo của lập trình, đó là thuật toán và cấu tạo dữ liệu vẫn không đổi.

Nếu chúng ta biết cách buổi giao lưu của bảng băm, thì bạn có thể sử dụng cách xúc tiến của chúng trong bất kỳ ngôn ngữ lập trình làm sao như HashMap từ JDK, tự điển vào Python hoặc HashMap từ thư viện tăng C ++ .

Vì vậy, nếu như khách hàng nghiêm túc về lập trình và phân biệt rằng thuật toán và kết cấu dữ liệu không phải là tùy chọn, thì đó là một số cuốn sách hoàn hảo để học tập thuật toán.

Một số bạn cũng có thể đã đọc bọn chúng trước đây, nhưng chúng tương đối đáng nhằm đọc lại.

1. Reviews về các thuật toán của Thomas H. Cormen

Đây là trong số những cuốn sách thuật toán phổ cập nhất , nhưng hãy chú ý rằng nó cất một lượng mập lý thuyết. Ấn bản hiện trên của cuốn sách này là Tái bạn dạng thứ 3, cùng tôi thực sự đề nghị mọi xây dựng viên nên có cuốn sách này trong giá đựng sách của họ, nhưng chỉ nhằm đọc ngắn với tham khảo.


*

Nó không thể xong cuốn sách này trong một ngồi, và một số chúng ta cũng có thể cảm thấy khó khăn để gọi là tốt, nhưng lại đừng lo lắng, bạn có thể kết hợp học tập của chúng ta với một khóa huấn luyện trực con đường như Cấu trúc tài liệu và giải thuật: Deep Dive áp dụng Java với cuốn sách này.

Điều này giống hệt như điều tốt nhất của cả hai vắt giới, bàn sinh hoạt Algrotihsm cơ bạn dạng một cách gấp rút trong một khóa đào tạo trực con đường và tiếp nối bạn củng cụ thêm kiến ​​thức đó bằng cách xem qua cuốn sách, điều đó sẽ có ý nghĩa sâu sắc hơn so với bạn khi bạn đã học qua 1 lớp học rồi.

Một tại sao khác khiến tôi ra mắt cuốn sách này như giữa những cuốn sách thứ nhất về thuật toán vì ngôn ngữ bất khả tri cùng kèm theo những bài giảng tại chỗ này .

Xin tình thật cảm ơn tất cả các tác giả Thomas H Cormen, Charles E. Leiserson và Ronald L. Rivest do đã tạo ra tài nguyên toàn vẹn nhất này, còn được gọi là cuốn sách CLRS về Thuật toán

2. Các thuật toán của Robert Sedgewick & Kevin Wayne

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


*

Ngoài ra còn tồn tại một vài khóa đào tạo trực đường Coursera miễn giá thành cho cuốn sách này, Thuật toán Phần 1 với Thuật toán Phần 2 , bổ sung một cách khác biệt cho cuốn sách này. Nó là xuất xắc vời. Đây cũng chính là khuyến nghị bậc nhất của tôi 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ó thể có một số bộ sưu tập tốt duy nhất về các khóa học cấu tạo dữ liệu với Thuật toán bao gồm từng công ty đề đề xuất thiết. Bọn chúng được gộp lại cùng với nhau bên dưới dạng Chuyên môn của Coursera về Thuật toán . Nếu bạn muốn tìm gọi sâu về Thuật toán, thì đó là nơi tôi khuyên chúng ta nên đến.

Tin hay là không thì tùy, nhưng nếu như bạn đã biết một ngôn từ lập trình, thì việc xem một lấy một ví dụ về thuật toán trên ngôn ngữ lập trình kia hơn những ngữ điệu lập trình không giống cũng làm giảm đường cong học tập tập. Bạn cũng rất có thể đọc phiên phiên bản thứ 4 của cuốn sách này trực tuyến đường miễn giá tiền tại đây .

Và, nếu như bạn thấy các khóa học tập của Coursera có ích vì chúng được tạo thành bởi những công ty với trường đại học danh tiếng trên toàn nạm giới, tôi khuyên chúng ta nên tham gia Coursera Plus , một gói đăng ký từ Coursera cho phép bạn truy vấn không số lượng giới hạn vào các khóa học thịnh hành nhất, chăm ngành của mình , chứng từ chuyên môn, và các dự án vẫn hướng dẫn. Nó có giá khoảng $ 399 / năm dẫu vậy nó hoàn toàn xứng đáng với số tiền của người sử dụng khi các bạn nhận được chứng chỉ không giới hạn.


*

3. Sổ tay thiết kế Thuật toán của Steve S. Skiena

Đây là 1 cuốn sách tuyệt vời nhất khác về thuật toán máy vi tính cũng nói về rất nhiều thuật toán với rất nhiều mã. Điều tôi đặc biệt quan trọng thích làm việc cuốn sách là khu vực anh ấy thực sự chuyển ra những ví dụ về khu vực anh ấy đang sử dụng các thuật toán (hoặc những biến thể của chúng) vào thực tế; nó thực sự giúp bạn thấy (các) lớp vấn đề mà một thuật toán ví dụ (hoặc bọn họ thuật toán) rất có thể được sử dụng.


*

Mã bởi C , mà lại nó không quá bí truyền và rất dễ làm theo. Tôi cũng đã nghỉ học một thời gian, và vấn đề đó đã góp tôi bước đầu khá cấp tốc với một vài thuật toán đồ thị . Tôi đã tất cả cuốn sách này sát mười năm rồi với thỉnh phảng phất vẫn coi nó. Xin rất cảm ơn
SteveSkiena

4. Thuật toán cho những cuộc bỏng vấn

Thuật toán mang đến cuộc chất vấn của Adnan Aziz là 1 cuốn sách buộc phải đọc về thuật toán, được viết về việc ghi 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 rất có thể bất thường như vậy nào nếu khách hàng nhìn kỹ hình ảnh trên bìa được vẽ bằng hình thu nhỏ dại của đều người khét tiếng và cuốn sách phân tích và lý giải cách bạn có thể phát triển những thuật toán như vậy. Thật thú vị yêu cầu không?

Tôi phù hợp cuốn sách này vì phương pháp tiếp cận và mục tiêu của nó, nhiều lúc học và một thứ với đối tượng người dùng khác nhau để giúp hiểu nó giỏi hơn.

5. Thuật toán trong Nutshell

O"Reilly"s Algorithm, in a Nutshell, là 1 trong những cuốn sách tuyệt vời nhất để học các thuật toán lập trình, quan trọng đặc biệt dành cho các lập trình viên Java. Nó tế bào tả các thuật toán tập trung vào việc triển khai chúng và không bao gồm toán học tập nặng được sử dụng trong số cuốn sách bom tấn về thuật toán.


Tất cả các thuật toán được trình diễn dưới dạng mẫu, với rượu cồn lực để sử dụng chúng, hình ảnh và mã giả mang đến cái nhìn tổng quan cao cấp và mã làm việc (trong C , C ++ , Java cùng Ruby ).

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

6. Thiết kế thuật toán của Kleinberg & Tardos

Đây thực sự là cuốn sách hay thiết bị hai về Thuật toán sau bài reviews về Thuật toán của Thomas Cormon . Nó không thực sự là một trình làng về những thuật toán và tương xứng hơn với các lập trình viên bao gồm kinh nghiệm.


Nó thiên về thi công thuật toán cho những nhà vạc triển quen thuộc với những thuật toán đề nghị thiết. Chúng ta nên bước đầu với cuốn sách ra mắt Thuật toán hoặc Thuật toán của Robert Sedgewick và sau đó tiếp tục cùng với cuốn sách này.

Btw, nếu như bạn thích, chúng ta cũng có thể kết hợp vấn đề học của bản thân với một khóa đào tạo và huấn luyện trực đường 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 trong những khóa học tuyệt vời để làm quen với các Thuật toán và cấu trúc Dữ liệu quan trọng trước khi chúng ta chuyển sang chủ đề thi công Thuật toán.

7. Reviews về các thuật toán: Một bí quyết tiếp cận sáng tạo

Giới thiệu về những thuật toán: phương thức tiếp cận trí tuệ sáng tạo của Udi Manber là 1 trong những cuốn sách tuyệt vời nhất khác nhằm tự học bởi nó chứa đầy hàng trăm vấn đề cùng ví dụ.


Nó có thiết kế để nâng cấp khả năng xử lý vấn đề của ứng viên cùng sự gọi biết về những nguyên tắc đằng sau xây dựng thuật toán, điều này sẽ giúp đỡ bạn trở nên tân tiến kỹ năng giải quyết và xử lý vấn đề với Mã hóa của mình .

8. Kiến thiết và phân tích những thuật toán

Đây là một đầu bếp hoàn hảo khác về thuật toán máy tính và xứng danh có một địa chỉ trong kệ sách của xây dựng viên. Khi bạn đã xem qua chuyên ngành của Coursera về Thuật toán và giữa những cuốn sách giới thiệu, chúng ta có thể đọc cuốn sách này để nghiên cứu các chủ đề cải thiện về thuật toán.


9. Cấu tạo dữ liệu với giải thuật. Aho, Ullman và Hopcroft

Một cuốn sách ra mắt hay không giống về thuật toán và cấu trúc dữ liệu. Một cuốn sách đáng yêu và dễ thương và sáng chóe và ngẫu nhiên lập trình viên nào ko thích thực hiện nhiều Toán học tập về thuật toán sẽ đánh giá cao cuốn sách này.


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

10. Thuật toán Python: làm chủ các thuật toán cơ phiên bản trong ngôn ngữ Python

Cuốn sách này có phong cách thiết kế cho các lập trình viên Python. Magnus Lie Hetland cũng là người sáng tác của một trong những cuốn sách nhập môn Python phổ biến, Beginning Python .


Như tôi đã nói rằng những thuật toán không phụ thuộc vào ngôn ngữ; học tập thuật toán python không có nghĩa là bạn ko thể xúc tiến chúng bằng Java hoặc C ++ , nhưng nếu như bạn đã biết Python , thì đây là một cuốn sách hoàn hảo để học tập thuật toán thiết bị tính.

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

11. Thuật toán Grokking

Đây là cuốn sách ko thuộc bộ truyện nơi bắt đầu khi tôi xuất bản nội dung bài viết này bên trên blog của mình, nhưng sau thời điểm đọc cuốn sách này, tôi cần đưa cuốn này vào danh sách vì tính đơn giản và dễ dàng của nó. Đó là một trong những cuốn sách hay nhất nhưng mà tôi đang đọc về thuật toán , nhất là theo quan điểm của fan mới bắt đầu.


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

Nền tảng của Aditya về thẩm mỹ cũng khiến cho cuốn sách này trở nên một mối cung cấp tài liệu học hành trực quan. Các bạn sẽ tìm thấy không hề ít sơ trang bị trọng tâm, thú vị trong cuốn sách này, khiến cho bạn tìm phát âm khái niệm giỏi hơn và nhanh hơn. Nếu khách hàng muốn, chúng ta có thể đọc bài reviews của tôi về cuốn sách Thuật toán Grokking bên trên The hacker News

Đây là 1 sơ đồ hữu dụng cân giữa cuốn sách này với cuốn sách thuật toán khác được kể trong list này


Tóm lại, một trong các những cuốn sách Thuật toán tốt nhất 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ả kết cấu dữ liệu với thuật toán, nhưng bất cứ điều gì nó bao gồm, nó giải thích chúng rất tốt.

Đó là toàn bộ về 10 cuốn sách Thuật toán mà hồ hết lập trình viên đề nghị đọc . Tôi gật đầu đồng ý rằng những thuật toán là một trong chủ đề phức hợp và không dễ để hiểu bọn chúng trong một lượt đọc; trong trường hòa hợp đó, tôi đề xuất đọc nhị lần và một cuốn sách.

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

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

Btw, ví như bạn lưu ý đến một khóa huấn luyện trực tuyến về thuật toán, tôi khuyên bạn nên xem Cấu trúc tài liệu và thuật toán: Lặn sâu bằng cách sử dụng Java bên trên Udemy. Đây ko phải là 1 trong những khóa học tập miễn phí, nhưng bạn có thể mua với cái giá chỉ dưới 10 đô la đến 15 đô la trên một vài đợt bán hàng flash của Udemy, ra mắt vài ngày một lần

Btw, nếu bạn mua bất kỳ khóa đào tạo và huấn luyện nào bằng phương pháp sử dụng những liên kết của mình trên nội dung bài viết này, tôi vẫn được giao dịch mà chưa phải trả thêm giá tiền cho bạn, nhưng bạn chỉ nên chọn mua một khóa học sau thời điểm xem bản xem trước cùng liệu chúng ta có thể kết nối với người hướng dẫn tốt không.

Mua một khóa đào tạo mà các bạn không kết nối với bạn hướng dẫn sẽ lãng phí cả thời hạn và chi phí bạc. Giống như với sách, nên chọn sách mà lại bạn kết nối với tác giả và kết phù hợp với một khóa huấn luyện và đào tạo nếu nó giúp cho bạn dễ dàng. Cảm ơn sự cung ứng của bạn.

Các bài viết về Cấu trúc cùng Thuật toán D ata không giống mà chúng ta cũng có thể thích

Cuối cùng, tất cả hai mẫu mã lập trình viên, một fan hiểu thuật toán cùng một bạn không hiểu.

Btw, bạn không cần phải đọc toàn bộ những cuốn sách này nhằm thành thành thục Thuật toán, vâng, điều ấy không bắt buộc, chúng ta có thể bắt đầu với một cuốn sách mà bạn thấy tiện lợi như Thuật toán Grokking và tiếp đến tiếp tục với 1 cuốn sách toàn vẹn khác như CLRS .

Xem thêm: Dộng Từ Bất Quy Tắc Tiếng Anh Have Trong Tiếng Anh Là Gì? Quá Khứ Của Have Trong Tiếng Anh Là Gì

Tái bút - Nếu bạn thích các khóa huấn luyện trực tuyến hơn sách hoặc bạn có nhu cầu học từ bỏ cả sách và các khóa học tập trực tuyến thì bạn cũng có thể xem danh sách 5 khóa huấn luyện Trực tuyến bậc nhất để Học cấu trúc Dữ liệu cùng Thuật toán . Nó bao gồm các khóa huấn luyện về Java, Python cùng JavaScript để dễ học.