void heapAdjust(int k[], int s, int n) {
int i, temp;
temp = k[s];
for (i = 2 * s; i < n; i *= 2) {
if (k[i] < k[i + 1] && i < n) {
i++;
}
if (temp >= k[i]) {
break;
}
k[s] = k[i];
s = i;
}
k[s] = temp;
}
void heapSort(int k[], int n) {
int i, temp;
for (i = n / 2; i > 0; i--) {
heapAdjust(k, 1, n);
}
for (i = n; i > 1; i--) {
temp = k[1];
k[1] = k[i];
k[i] = temp;
heapAdjust(k, 1, i - 1);
}
}
堆排序
最新推荐文章于 2024-09-04 23:05:17 发布