Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เรียงลำดับด้วย B-Tree

ใช้ 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