データ構造C小天井スタックまとめ
小さな天井は積み上げられたTopが永遠に最小ですが、下の大きさは保証されていません.
Code:
Code:
struct Heap{
int arr[1000];
int n;
void perdown(int p) /** **/
{
int x = arr[p];
int child, parent;
for (parent = p; parent * 2 <= n; parent = child)
{
child = parent * 2;
if (child != n && arr[child+1] < arr[child]) child++;
if (x <= arr[child]) break;
arr[parent] = arr[child];
}
arr[parent] = x;
}
void heapsort() /** **/
{
for (int i = n / 2; i > 0; i--)
{
perdown(i);
}
}
int Delete() // , .
{
int x = arr[1];
arr[1] = arr[n--];
perdown(1);
return x;
}
void Insert(int x) //
{
arr[++n] = x;
int i;
for (i = n; arr[i/2] > x&&i > 0; i /= 2)
arr[i] = arr[i/2];
arr[i] = x;
}
};