

```
#include <stdio.h>
int count = 0;
void swap(int k[], int i, int j)
{ //交換
int temp;
temp = k[i];
k[i] = k[j];
k[j] = temp;
}
void HeapAdjust(int k[], int s, int n)
{
int i, temp;
temp = k[s];
for( i=2*s; i <= n; i*=2 ) //每次都是跳到左孩子
{
count++;
if(i<n && k[i] < k[i+1])
i++; //找到孩子節點中的大者
if( temp >= k[i] )break; //如果雙親節點大于孩子節點的大者,跳出循環(不用再循環)
k[s] = k[i];
s=i; //交換位置后繼續比較
}
k[s] = temp;
}
void HeapSort(int k[], int n)
{
int i;
for( i=n/2; i > 0; i-- )
HeapAdjust(k, i, n); //構造大頂堆
:976435102,然后進行排序
for(i=1;i<10;i++)
printf("%d", k[i]);
printf("\n\n");
for(i=n;i>1;i--)
{
swap(k, 1, i);
HeapAdjust(k, 1, i-1); //調整父節點與其孩子節點進行比較并交換位置和調整
}
}
int main()
{
int i,a[10]={-1,5,2,6,0,3,9,1,7,4};
HeapSort(a, 9);
printf("總共執行 %d 次比較!\n",count);
printf("排序后的結果是: ");
for(i=1;i<10;i++)
printf("%d", a[i]);
printf("\n\n");
return 0;
}
```
- 藍橋杯
- 問題 1434[藍橋杯][歷屆試題]回文數字
- 問題 1084: 用篩法求之N內的素數。 時間限制: 1Sec 內存限制: 64MB
- 問題 1094: 字符串的輸入輸出處理 時間限制: 1Sec 內存限制: 64MB
- A + B Problem II(1002)
- ACM
- L. Digit sum--The Preliminary Contest for ICPC Asia Shanghai 2019
- 單鏈表逆置法
- 有線性表(a1,a2,…,an),采用單鏈表存儲,頭指針為H,每個結點中存放線性表中一個元素,現查找某個元素值等于X的結點。分別寫出下面三種情況的查找語句。要求時間盡量少。 (1)線性表中元素無序。(2)線性表中元素按遞增有序。 (3)線性表中元素按遞減有序。
- 減治法
- 減治法之堆運算
- 減治法之求兩序列中位數
- 減治法之求第k小的數字
- 選擇問題考研題
- 動態規劃
- 動態規劃之最長公共子序列
- 最大總和(1003)
- 數塔問題
- 動態規劃之最大子段和
- 丟雞蛋
- 0-1背包問題
- TSP問題
- 貪心算法
- 活動安排