Add minor adjustments/clean-up
This commit is contained in:
@@ -8,5 +8,4 @@ void dlos_sort_heap(dlos_Heap *h) {
|
||||
h->size -= 1;
|
||||
dlos_sift_down(0, h);
|
||||
}
|
||||
h->size = original_size;
|
||||
}
|
||||
|
@@ -21,12 +21,6 @@ static int right_sibling(int i) {
|
||||
return (i % 2 == 1) ? i + 1 : -1;
|
||||
}
|
||||
|
||||
void dlos_node_swap(dlos_ComparableNode *arr, int a, int b) {
|
||||
dlos_ComparableNode temp = arr[a];
|
||||
arr[a] = arr[b];
|
||||
arr[b] = temp;
|
||||
}
|
||||
|
||||
static int index_of_larger_child(int i, dlos_Heap *h) {
|
||||
int larger = left_child(i);
|
||||
if (larger >= h->size) {
|
||||
@@ -38,6 +32,12 @@ static int index_of_larger_child(int i, dlos_Heap *h) {
|
||||
return larger;
|
||||
}
|
||||
|
||||
void dlos_node_swap(dlos_ComparableNode *arr, int a, int b) {
|
||||
dlos_ComparableNode temp = arr[a];
|
||||
arr[a] = arr[b];
|
||||
arr[b] = temp;
|
||||
}
|
||||
|
||||
void dlos_sift_down(int i, dlos_Heap *h) {
|
||||
int target = index_of_larger_child(i, h);
|
||||
while (target > 0 && h->compare(&h->arr[i], &h->arr[target]) > 0) {
|
||||
|
@@ -7,6 +7,7 @@ typedef struct dlos_ComparableNode {
|
||||
typedef struct dlos_Heap {
|
||||
int size;
|
||||
dlos_ComparableNode *arr;
|
||||
int arr_size;
|
||||
int (*compare)(dlos_ComparableNode *a, dlos_ComparableNode *b);
|
||||
} dlos_Heap;
|
||||
|
||||
@@ -36,7 +37,12 @@ void dlos_max_heap(dlos_Heap *h);
|
||||
// for (int i = 0; i < test_size; i++) {
|
||||
// a[i].value = &data_storage[i];
|
||||
// }
|
||||
// dlos_Heap heap = { .size = test_size, .arr = a, .compare = compare_nodes };
|
||||
// dlos_Heap heap = {
|
||||
// .size = test_size,
|
||||
// .arr = a,
|
||||
// .arr_size = test_size,
|
||||
// .compare = compare_nodes
|
||||
// };
|
||||
// dlos_max_heap(&heap);
|
||||
// dlos_sort_heap(&heap);
|
||||
// for (int i = 0; i < test_size; i++) {
|
||||
|
7
c/test.c
7
c/test.c
@@ -22,7 +22,12 @@ int main(int argc, char *argv[]) {
|
||||
for (int i = 0; i < test_size; i++) {
|
||||
a[i].value = &data_storage[i];
|
||||
}
|
||||
dlos_Heap heap = { .size = test_size, .arr = a, .compare = compare_nodes };
|
||||
dlos_Heap heap = {
|
||||
.size = test_size,
|
||||
.arr = a,
|
||||
.arr_size = test_size,
|
||||
.compare = compare_nodes
|
||||
};
|
||||
dlos_max_heap(&heap);
|
||||
dlos_sort_heap(&heap);
|
||||
for (int i = 0; i < test_size; i++) {
|
||||
|
Reference in New Issue
Block a user