A good set of algorithms to get started with is sorting algorithms. There are many different options, from easy (selection sort, bubble sort), to medium (shell sort, mergesort, quicksort) to hard (heapsort, timsort, mergesort with linear space complexity).
A different field with many options is graph algorithms. There are easy options such as depth first search and breadth first search. Problems such as topological sorting (using depth-first search) and minimum spanning tree (Kruskal's algorithm) are of medium difficulty. There are also many algorithms related to pathfinding, the most fundamental being Dijkstra's algorithm. A* is an algorithm that extends Dijkstra by a heuristic that makes it faster if assumptions can be made about the graph. Flow networks are also a field with many interesting algorithms such as the Ford–Fulkerson algorithm or the Edmonds–Karp algorithm.
ชุดอัลกอริธึมที่ดีในการเริ่มต้นคือการเรียงลำดับอัลกอริธึม มีตัวเลือกต่างๆ มากมาย ตั้งแต่แบบง่าย (การเรียงลำดับการเลือก การเรียงลำดับแบบฟอง) ไปจนถึงขนาดกลาง (การเรียงลำดับเชลล์ การผสาน การเรียงลำดับแบบด่วน) ไปจนถึงแบบยาก (การเรียงลำดับฮีป การเรียงลำดับแบบไทม์ การผสานที่มีความซับซ้อนของพื้นที่เชิงเส้น) ฟิลด์อื่นที่มีตัวเลือกมากมายคืออัลกอริธึมกราฟ มีตัวเลือกง่ายๆ เช่น การค้นหาเชิงลึกก่อน และการค้นหาในแนวกว้างก่อน ปัญหาเช่นการเรียงลำดับทอพอโลยี (โดยใช้การค้นหาเชิงลึกก่อน) และแผนผังการขยายขั้นต่ำ (อัลกอริทึมของ Kruskal) มีความยากปานกลาง นอกจากนี้ยังมีอัลกอริธึมมากมายที่เกี่ยวข้องกับการค้นหาเส้นทาง อัลกอริธึมพื้นฐานที่สุดคืออัลกอริธึมของ Dijkstra A* เป็นอัลกอริธึมที่ขยาย Dijkstra ด้วยการศึกษาสำนึกที่ทำให้เร็วขึ้นหากสามารถตั้งสมมติฐานเกี่ยวกับกราฟได้ เครือข่าย Flow ยังเป็นฟิลด์ที่มีอัลกอริธึมที่น่าสนใจมากมาย เช่น อัลกอริธึม Ford–Fulkerson หรืออัลกอริธึม Edmonds–Karp
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence