生活随笔
收集整理的這篇文章主要介紹了
数据结构源码笔记(C语言):堆排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<stdio.h>
#include<malloc.h>
#define MAXE 20typedef int KeyType
;
typedef char InfoType
[10];typedef struct
{KeyType key
;InfoType data
;
}RecType
;void DispHeap(RecType r
[],int i
,int n
)
{if(i
<=n
)printf("%d ",r
[i
].key
);if(2*i
<=n
||2*i
+1<n
){printf("( ");if(2*i
<=n
)DispHeap(r
,2*i
,n
);printf(",");if(2*i
+1<=n
)DispHeap(r
,2*i
+1,n
);printf(" )");}
}void Sift(RecType r
[],int low
,int high
)
{int i
=low
,j
=2*i
;RecType temp
=r
[i
];while(j
<=high
){if(j
<high
&& r
[j
].key
<r
[j
+1].key
)j
++;if(temp
.key
<r
[j
].key
){r
[i
]=r
[j
];i
=j
;j
=2*i
;}else break;}r
[i
]=temp
;
}void HeapSort(RecType r
[],int n
)
{int i
;RecType temp
;for(i
=n
/2;i
>=1;i
--)Sift(r
,i
,n
);printf("初始堆: ");DispHeap(r
,1,n
);printf("\n");for(i
=n
;i
>=2;i
--){printf("交換%d與%d,輸出%d\n",r
[i
].key
,r
[1].key
,r
[1].key
);temp
=r
[1];r
[1]=r
[i
];r
[i
]=temp
;Sift(r
,1,i
-1);printf("篩選調整得到堆:");DispHeap(r
,1,i
-1);printf("\n");}
}int main()
{int i
,k
,n
=10;KeyType a
[]={6,8,7,9,0,1,3,2,4,5};n
=sizeof(a
)/4;RecType r
[MAXE
];for(i
=1;i
<=n
;i
++) r
[i
].key
=a
[i
-1];printf("\n");printf("初始關鍵字: ");for(k
=1;k
<=n
;k
++)printf("%4d",r
[k
].key
);printf("\n");for(i
=n
/2;i
>=1;i
--)Sift(r
,i
,n
);HeapSort(r
,n
);printf("最后結果: ");for(k
=1;k
<=n
;k
++)printf("%2d ",r
[k
].key
);printf("\n\n");return 0;
}
數據結構源碼筆記(C語言描述)匯總:
數據結構源碼筆記(C語言):英文單詞按字典序排序的基數排序
數據結構源碼筆記(C語言):直接插入排序
數據結構源碼筆記(C語言):直接選擇排序
數據結構源碼筆記(C語言):置換-選擇算法
數據結構源碼筆記(C語言):Huffman樹字符編碼
數據結構源碼筆記(C語言):Josephus問題之順序表
數據結構源碼筆記(C語言):Josephus問題之循環鏈接表
數據結構源碼筆記(C語言):多項式合并
數據結構源碼筆記(C語言):二叉樹之葉子結點旋轉銷毀
數據結構源碼筆記(C語言):哈夫曼樹
數據結構源碼筆記(C語言):集合的位向量表示
數據結構源碼筆記(C語言):鏈接隊列
數據結構源碼筆記(C語言):鏈接棧
數據結構源碼筆記(C語言):線性表的單鏈表示
數據結構源碼筆記(C語言):線性表的順序表示
數據結構源碼筆記(C語言):棧的基本操作
數據結構源碼筆記(C語言):中綴表達式
數據結構源碼筆記(C語言):希爾插入排序
數據結構源碼筆記(C語言):索引文件建立和查找
數據結構源碼筆記(C語言):冒泡排序
數據結構源碼筆記(C語言):快速排序
數據結構源碼筆記(C語言):可變長度字符串的快速排序
數據結構源碼筆記(C語言):基數排序
數據結構源碼筆記(C語言):二路歸并排序
數據結構源碼筆記(C語言):堆排序
數據結構源碼筆記(C語言):二叉樹搜索樹Kruskal
數據結構源碼筆記(C語言):二叉搜索樹Prim
數據結構源碼筆記(C語言):最短路徑弗洛伊德算法
數據結構源碼筆記(C語言):深度、廣度優先生成樹
數據結構源碼筆記(C語言):鄰接矩陣轉化鄰接表
數據結構源碼筆記(C語言):統計字符串中出現的字符及其次數
數據結構源碼筆記(C語言):順序查找
數據結構源碼筆記(C語言):哈希表的相關運算算法
數據結構源碼筆記(C語言):分塊法查找
數據結構源碼筆記(C語言):二分查找
數據結構源碼筆記(C語言):二叉樹遍歷
數據結構源碼筆記(C語言):二叉平衡樹的相關操作算法
數據結構源碼筆記(C語言):二叉排序樹的基本操作算法
數據結構源碼筆記(C語言):B樹的相關運算算法
總結
以上是生活随笔為你收集整理的数据结构源码笔记(C语言):堆排序的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。