Menu
CoddyTech

Triển khai (phần 1)

Bài học 5 trên 9 trong khóa học Heap Sort, chuỗi DSA của Coddy.

Chúng ta sẽ xây dựng Heap Sort từ thao tác cốt lõi trở lên.

challenge icon

Thử thách

Dễ

Trọng tâm của Heap Sort là thao tác sift-down. Trước tiên, ta hãy xây dựng thao tác này.

Viết một hàm có tên siftDown, nhận một mảng arr (được xem là một đống nhị phân) và một chỉ số i, rồi khôi phục tính chất đống cực đại tại nút đó bằng cách đẩy nút xuống. So sánh nút với hai nút con ở vị trí 2*i + 1 và 2*i + 2; nếu nút con lớn hơn có giá trị lớn hơn nút hiện tại, hãy hoán đổi với nút đó rồi tiếp tục từ vị trí của nút con. Trả về mảng.

Ví dụ, siftDown([1, 10, 5, 3, 2], 0) trả về [10, 3, 5, 1, 2].

Tự làm thử

#include <stdlib.h>

int* siftDown(int* arr, int arr_size, int i, int* returnSize) {
    // Viết code ở đây
    *returnSize = arr_size;
    return arr;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Heap Sort, chuỗi DSA

Tự luyện tập: Trình biên dịch C online