- C++
构建小根堆函数
- 2024-12-8 12:25:58 @
void Make_heap(vector <int> &arr) {
for(int i = 1; i <= (arr.size() >> 1); ++i) {
int now = i;
int left = (now << 1), right = (now << 1) + 1;
while(left <= arr.size() && arr[now - 1] > arr[left - 1]) {
swap(&arr[now - 1], &arr[left - 1]);
now <<= 1;
left <<= 1;
}
now = 1;
while(right <= arr.size() && arr[now - 1] > arr[right - 1]) {
swap(&arr[now - 1], &arr[right - 1]);
now = (now << 1) + 1;
right = (now << 1) + 1;
}
}
return;
}
这个函数只是构建小根堆 并不是堆排序 别误会了
1 comments
-
陈锦润 LV 8 @ 2024-12-8 16:19:12
有bug 别抄 找时间修
- 1