จุดแข็งของโปรแกรมเมอร์ทุกคนอยู่ที่ความรู้ของเขา ใช่ ความสามารถในการใช้ Google ได้ดีนั้นไม่ได้อยู่ในตำแหน่งสุดท้าย แต่ถึงกระนั้นก็ต้องมีความรู้จำนวนหนึ่งโดยขึ้นอยู่กับวิธีคิดของนักพัฒนาที่ถูกสร้างขึ้น ยิ่งความรู้นี้ลึกซึ้งเท่าไร โปรแกรมเมอร์ก็จะยิ่งมีโซลูชันที่น่าสนใจมากขึ้นเท่านั้น ส่วนหนึ่งของ "ฐาน" ดังกล่าวคือโครงสร้างข้อมูลและอัลกอริธึม คุณจะขยายความรู้ไปในทิศทางนี้ได้อย่างไร? เป็นทางเลือกให้หาหนังสือความรู้ที่จะกลายเป็นทุนสำรองและรากฐานสำหรับการศึกษาต่อ สำหรับ ฉันหนังสือประเภทนี้คือ“Java Data Structures and Algorithms” โดย Robert Laforet
เพื่อใคร
ผู้ชมหนังสือเล่มนี้อาจเป็นคนได้หลากหลาย เนื่องจากมันจะมีประโยชน์ทั้งสำหรับผู้ที่เพิ่งเข้าใจไวยากรณ์ของภาษาJavaและสำหรับการฝึกเขียนโปรแกรม เพื่อความเข้าใจที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับคุณสมบัติของโครงสร้างข้อมูลและอัลกอริธึม .เกี่ยวกับอะไร
หนังสือเล่มนี้เน้นไปที่การศึกษาและการใช้โครงสร้างข้อมูลและอัลกอริธึมในการเขียนโปรแกรม โดยจะสอนผู้อ่านว่าโครงสร้างข้อมูลกำหนดวิธีการจัดระเบียบข้อมูลในหน่วยความจำอย่างไร รวมถึงวิธีที่อัลกอริทึมดำเนินการต่างๆ บนโครงสร้างเหล่านี้ มาเจาะลึกลงไปอีกหน่อยแล้วดูว่าหนังสือเล่มนี้เกี่ยวกับอะไร:- อาร์เรย์ การดำเนินการแทรก ค้นหา และลบในอาร์เรย์และอาร์เรย์ที่เรียงลำดับจะกล่าวถึงในรายละเอียด สาธิตการทำงานของการค้นหาเชิงเส้นและไบนารี่สำหรับอาร์เรย์แบบเรียงลำดับและไม่เรียงลำดับ คุณจะได้เรียนรู้ว่า O-syntax คืออะไร
- การเรียงลำดับ มีการพิจารณาวิธีการเรียงลำดับง่ายๆ สามวิธี: "การเรียงลำดับแบบบับเบิ้ล", "การเรียงลำดับการเลือก", "การเรียงลำดับการแทรก" จากหนังสือคุณจะได้เรียนรู้ว่าอันไหนช้าที่สุดและอันไหนง่ายที่สุด
- กองและคิว โครงสร้างข้อมูล เช่น สแต็ก คิว และคิวลำดับความสำคัญ ประสิทธิภาพ และการนำไปใช้งานใน Java ได้รับการพิจารณา
- รายการที่เชื่อมโยง หนังสือเล่มนี้พูดถึงรายการที่มีการเชื่อมโยงสองครั้งและเชื่อมโยงสองครั้ง ประสิทธิภาพ และวิธีการดำเนินการแทรก การค้นหา และการลบ ตัววนซ้ำและวิธีการที่ต้องการก็ครอบคลุมเช่นกัน
- การเรียกซ้ำ การเรียกซ้ำจะพิจารณาในสถานการณ์ต่างๆ เช่น การคำนวณตัวเลขสามเหลี่ยมและแฟกทอเรียล การสร้างแอนนาแกรม การค้นหาไบนารีแบบเรียกซ้ำ การไขปริศนาหอคอยฮานอย การใช้การเรียงลำดับแบบผสาน การแก้ปัญหากระเป๋าเป้สะพายหลัง
- การเรียงลำดับที่ไม่สำคัญ มีการพิจารณาวิธีการขั้นสูงเพิ่มเติม: การเรียงลำดับเชลล์, การเรียงลำดับอย่างรวดเร็วและการเรียงลำดับ Radix, อัลกอริธึม, ประสิทธิภาพ
- ต้นไม้ไบนารี มีการพิจารณาแผนผังการค้นหาแบบไบนารีที่สมดุล วิธีการทำงาน การดำเนินการแทรกและการลบ การข้ามประเภทต่างๆ การค้นหาค่าต่ำสุดและสูงสุด ค้นหาตัวตายตัวแทน Huffman Code ก็จะได้รับการคุ้มครองเช่นกัน
- ต้นไม้สีแดงและสีดำ เราพิจารณาหนึ่งในต้นไม้ที่มีความสมดุลที่มีประสิทธิภาพสูงสุด การหมุนและการเปลี่ยนสีที่จำเป็นสำหรับการปรับสมดุล
- ต้น 2-3-4. ต้นไม้ประเภทนี้ได้รับการอธิบายไว้เป็นตัวอย่างหนึ่งของต้นไม้หลายเส้นทาง โดยจะมีการหารือถึงการทำงานและความสัมพันธ์กับต้นไม้บีซึ่งใช้สำหรับจัดเก็บข้อมูลภายนอก
- ตารางแฮช การแฮชและวิธีการต่างๆ ครอบคลุมอยู่ เช่น การตรวจสอบเชิงเส้นและกำลังสอง การแฮชสองครั้ง และวิธีการต่อสายโซ่ คุณยังสามารถเรียนรู้วิธีการใช้แฮชเพื่อจัดระเบียบพื้นที่จัดเก็บไฟล์ภายนอก
- ปิรามิด นี่คือแผนผังชนิดพิเศษที่ใช้ในการดำเนินการคิวลำดับความสำคัญอย่างมีประสิทธิภาพ หนังสือเล่มนี้กล่าวถึงกลไกการทำงานของการแทรก การลบ และการจัดเรียงใหม่ นอกจากนี้คุณยังจะได้เรียนรู้ว่าการเรียงสับเปลี่ยนแบบเสี้ยมคืออะไร และสามารถนำมาใช้ใน Java ได้อย่างไร
- กราฟ กราฟแบบถ่วงน้ำหนักและแบบไม่ถ่วงน้ำหนัก อัลกอริธึมสำหรับการค้นหากราฟ และอัลกอริธึมที่ใช้ในการค้นหาเส้นทางการเคลื่อนที่ที่สั้นที่สุดจะถูกนำเสนอ
แอพเวิร์กช็อปคืออะไร
แอปพลิเคชัน การประชุมเชิงปฏิบัติการใช้เพื่อสาธิตโครงสร้างและอัลกอริทึมเหล่านี้ แอปพลิเคชันได้รับการออกแบบเป็นแอปเพล็ต Java ที่สามารถเรียกใช้ในเบราว์เซอร์ แอปพลิเคชันเวิร์กชอปจะสร้างไดอะแกรมกราฟิกที่แสดงวิธีการทำงานของอัลกอริทึมหรือโครงสร้างข้อมูล ตัวอย่างเช่น ในแอปพลิเคชันหนึ่งที่ออกแบบมาเพื่อแสดงคอลัมน์ที่เรียงลำดับจากน้อยไปหามาก แต่ละครั้งที่คุณคลิกปุ่มบนฮิสโตแกรม ขั้นตอนถัดไปจะถูกดำเนินการ ในกรณีนี้ค่าของตัวแปรที่เกี่ยวข้องกับอัลกอริทึมนี้จะปรากฏขึ้นเพื่อให้คุณเห็นว่าโค้ดถูกดำเนินการอย่างไร (ชวนให้นึกถึงคำอธิบายของดีบักเกอร์ใช่ไหม)วิธีดาวน์โหลดและติดตั้ง Workshop
- คุณสามารถดาวน์โหลดแอพเพล็ตได้ที่ นี่
- คลิกที่WorkshopApplets.ZIPและดาวน์โหลดไฟล์เก็บถาวรพร้อมแอปเพล็ต
- เพื่อทำความเข้าใจแอปเพล็ต คุณสามารถอ่านหัวข้อ นี้ และแสดงความคิดเห็นได้
ข้อดีของหนังสือ
- อ่านง่ายมาก มีการอธิบายตัวอย่างมากมายเกือบ "บนนิ้วของคุณ";
- เปิดหูเปิดตาของคุณสู่สิ่งที่ "คลาสสิก" มากมายโดยไม่ต้องใช้สูตรทางคณิตศาสตร์ที่ซับซ้อน เกือบจะไม่มีพวกเขาแล้ว :)
- แม้ว่าตัวอย่างจะอยู่ในภาษา Java แต่การกระทำที่เกิดขึ้นในโค้ดจะได้รับการอธิบายอย่างละเอียดด้วยข้อความที่ตามมาและความคิดเห็นในโค้ด ดังนั้นผู้ใช้ภาษาการเขียนโปรแกรมใด ๆ จึงสามารถอ่านได้เนื่องจากตัวอย่างโค้ดนั้นค่อนข้างง่าย: พวกเขาอ่านได้เกือบจะเหมือนกับรหัสเทียม
ข้อเสียของหนังสือ
- แม้จะมีคำอธิบาย "บนนิ้ว" แต่ก็มีช่องว่างอยู่ เพื่ออธิบายการเรียงลำดับอาร์เรย์ผู้เขียนวาดทีมฟุตบอล แต่ในทางปฏิบัติแล้วการเรียงลำดับของเชลล์ไม่ได้อธิบายไว้ที่นั่น: ฉันไม่เข้าใจและอ่านเกี่ยวกับเรื่องนี้บนอินเทอร์เน็ต
- อาจมีการพิมพ์ผิด มักจะอยู่ในรูปภาพหรือตาราง
- รหัสบางส่วนค่อนข้างล้าสมัย
อะนาล็อก
ฉันแนะนำอะนาล็อกของหนังสือเล่มนี้หรือเล่มที่ตามมา (สำหรับผู้ที่ต้องการเรียนต่อ):- “อัลกอริทึมใน Java” โดย Robert Sedgwick;
- “อัลกอริทึม: การสร้างและการวิเคราะห์” โดย Thomas Cormen
GO TO FULL VERSION