Dark mode
Data Structures
Basic Structures
โครงสร้างข้อมูลพื้นฐานที่ใช้เป็นองค์ประกอบสำคัญของโครงสร้างที่ซับซ้อนมากขึ้น
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
การเก็บข้อมูลแบบเรียงลำดับ | การเข้าถึง: O(1) | การเก็บรายการข้อมูล | ขนาดตายตัวในบางภาษา (JS/TS, Java) | ||
คู่คีย์-ค่า | การเข้าถึง: O(1) | การตั้งค่า, พจนานุกรม | คีย์เป็น string เท่านั้นใน JS/TS | ||
อาร์เรย์ที่ขยายได้ | การเข้าถึง: O(1) | การเก็บข้อมูลแบบไดนามิก | ขยายขนาดได้อัตโนมัติ |
Linear Structures
โครงสร้างข้อมูลที่จัดเรียงองค์ประกอบเป็นลำดับเชิงเส้น
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
เข้าก่อนออกหลัง | เพิ่ม/ลบ: O(1) | สแต็กการเรียกฟังก์ชัน | มักใช้อาร์เรย์เป็นพื้นฐาน | ||
เข้าก่อนออกก่อน | เพิ่ม: O(1) | การจัดตารางงาน | มีหลายแบบ (circular, priority) | ||
ลิงค์ลิสต์สองทาง | การเข้าถึง: O(n) | การดำเนินการระดับต่ำ | ดีสำหรับการแทรก/ลบบ่อย | ||
คิวความสำคัญ | เพิ่ม: O(log n) | ระบบจัดตารางงาน | ใช้สำหรับจัดตารางงาน |
Tree Structures
โครงสร้างข้อมูลแบบลำดับชั้นที่มีความสัมพันธ์แบบพ่อแม่-ลูกระหว่างองค์ประกอบ
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
โครงสร้างแบบลำดับชั้น | แตกต่างกันไป | ระบบไฟล์ | มีหลายแบบ (balanced, unbalanced) | ||
ต้นไม้ไบนารีเรียงลำดับ | O(log n) เมื่อสมดุล | การค้นหาข้อมูลเรียงลำดับ | ต้องรักษาสมดุล | ||
คู่คีย์-ค่าเรียงลำดับ | O(log n) | แผนที่แบบเรียงลำดับ | ใช้สำหรับจัดเก็บข้อมูลแบบเรียงลำดับ |
Advanced Structures
โครงสร้างข้อมูลที่ซับซ้อนมากขึ้นสำหรับกรณีใช้งานเฉพาะทาง
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
คู่คีย์-ค่าใช้ฟังก์ชันแฮช | O(1) โดยเฉลี่ย | แคช, ฐานข้อมูล | อาจมีการชนกัน | ||
คู่คีย์-ค่าใช้ฟังก์ชันแฮช | O(1) โดยเฉลี่ย | การเก็บคีย์ที่ไม่ซ้ำกัน | ใช้สำหรับจัดเก็บข้อมูลแบบไม่ซ้ำกัน | ||
ชุดข้อมูลที่ไม่ซ้ำกัน | O(1) โดยเฉลี่ย | การทดสอบสมาชิกภาพ | ใช้สำหรับทดสอบสมาชิกภาพ | ||
ต้นไม้คำนำหน้า | O(L) สำหรับค้นหา | ระบบเติมข้อความอัตโนมัติ | ใช้สำหรับระบบเติมข้อความอัตโนมัติ |
Graph Structures
โครงสร้างข้อมูลที่แสดงความสัมพันธ์ระหว่างโหนดต่างๆ ในรูปแบบเครือข่าย
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
โหนดที่มีเส้นเชื่อมทิศทาง | แตกต่างกันไป | การกำหนดเส้นทางเครือข่าย | มีหลายแบบ (weighted, unweighted) | ||
โหนดที่มีเส้นเชื่อมทิศทางเดียว | แตกต่างกันไป | การกำหนดเส้นทางเครือข่าย | ใช้สำหรับเครือข่ายที่ไม่มีทิศทาง |
Concurrent Structures
โครงสร้างข้อมูลสำหรับการทำงานแบบขนานและจัดการการเข้าถึงข้อมูล
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
การป้องกันการเข้าถึงข้อมูลพร้อมกัน | ขึ้นกับการใช้งาน | การแชร์ข้อมูลระหว่างเธรด | ใช้สำหรับป้องกันการเข้าถึงพร้อมกัน | ||
การอ่านหลายครั้งหรือเขียนหนึ่งครั้ง | ขึ้นกับการใช้งาน | กรณีที่อ่านบ่อยแต่เขียนน้อย | ใช้สำหรับกรณีที่อ่านบ่อยแต่เขียนน้อย | ||
การดำเนินการแบบอะตอมมิก | O(1) | การแชร์ข้อมูลพื้นฐานระหว่างเธรด | ใช้สำหรับแชร์ข้อมูลพื้นฐาน |
Functional Structures
โครงสร้างข้อมูลแบบ functional programming
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
การแสดงค่าที่อาจไม่มีค่า | O(1) | การจัดการค่า null | ใช้สำหรับจัดการค่า null | ||
การแสดงผลลัพธ์หรือข้อผิดพลาด | O(1) | การจัดการข้อผิดพลาด | ใช้สำหรับจัดการข้อผิดพลาด | ||
การเข้าถึงองค์ประกอบแบบลำดับ | ขึ้นกับการใช้งาน | การประมวลผลแบบ lazy | ใช้สำหรับประมวลผลแบบ lazy |
Database Structures
โครงสร้างข้อมูลที่ใช้ในระบบฐานข้อมูล
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
ต้นไม้สมดุลสำหรับจัดเก็บข้อมูล | O(log n) | การจัดเก็บข้อมูลในดิสก์ | ใช้ในหลาย DB | ใช้สำหรับจัดเก็บข้อมูลในดิสก์ | |
การรวมข้อมูลแบบล็อก | O(log n) | การเขียนข้อมูลจำนวนมาก | ใช้ในหลาย DB | ใช้สำหรับเขียนข้อมูลจำนวนมาก | |
การสร้างดัชนีสำหรับค้นหาเร็ว | ขึ้นกับประเภท | การเพิ่มความเร็วการค้นหา | ใช้ในหลาย DB | ใช้สำหรับเพิ่มความเร็วการค้นหา |
Memory Structures
โครงสร้างการจัดการหน่วยความจำ
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
การจัดสรรหน่วยความจำเป็นกลุ่ม | O(1) | การจัดสรรหน่วยความจำประสิทธิภาพสูง | ใช้สำหรับจัดสรรหน่วยความจำประสิทธิภาพสูง | ||
การใช้ซ้ำอ็อบเจ็กต์ | O(1) | ลดการสร้างอ็อบเจ็กต์บ่อยครั้ง | ใช้สำหรับลดการสร้างอ็อบเจ็กต์บ่อยครั้ง | ||
การเก็บข้อมูลที่ใช้บ่อย | O(1) | การลดการคำนวณซ้ำ | ใช้สำหรับลดการคำนวณซ้ำ |
Rust-Specific Structures
โครงสร้างข้อมูลเฉพาะของภาษา Rust
Name | คำอธิบาย | ความซับซ้อนเวลา | usecase | Languages | ใช้สำหรับ |
---|---|---|---|---|---|
การนับการอ้างอิงแบบอะตอมมิก | O(1) | การแชร์ข้อมูลระหว่างเธรด | ใช้สำหรับแชร์ข้อมูลระหว่างเธรด | ||
การนับการอ้างอิง | O(1) | การแชร์ข้อมูลในเธรดเดียว | ใช้สำหรับแชร์ข้อมูลในเธรดเดียว | ||
การเปลี่ยนแปลงข้อมูลภายใน | O(1) | การเปลี่ยนแปลงข้อมูล immutable | ใช้สำหรับเปลี่ยนแปลงข้อมูล immutable | ||
การตรวจสอบการยืมข้อมูลขณะรันไทม์ | O(1) | การยืมข้อมูลแบบไดนามิก | ใช้สำหรับการยืมข้อมูลแบบไดนามิก |