ใช้ B-Tree (ในที่นี้ max 5 keys per node) เพื่อเรียงลำดับข้อมูล แทรกค่าเข้า B-Tree แล้ว inorder traversal จะได้ลำดับจากน้อยไปมาก
โครงสร้างหลัก
- Node: data[5], child_ptr[6], leaf flag, count n
- split_node(): แยก node เมื่อเต็ม 5 keys
- insert(): แทรกค่า พร้อม split และ sort ภายใน node (bubble sort เพราะข้อมูลน้อย)
- traverse(): inorder traversal พิมพ์ค่าที่เรียงแล้ว
โค้ดสำคัญ (สรุป)
struct BTreeNode {
int *data; BTreeNode **child_ptr; bool leaf; int n;
} *root = NULL;
void insert(int a) { /* ... split ถ้า node เต็ม, insert แล้ว sort */ }
void traverse(BTreeNode *p) { /* inorder: traverse child, print data */ }
int main() {
int n, val; cin >> n;
for (int i=0; i
ผลลัพธ์
Input: 54 23 98 52 10 23 47 84
Output: 10 23 23 47 52 54 84 98