设为首页 加入收藏

TOP

堆排序原理及其实现(C++)(二)
2016-12-06 20:24:39 】 浏览:467
Tags:排序 原理 及其 实现
onst void*, const void*)) { for (int i = n / 2 - 1; i >= 0; i--) makeHeap(x, i, n, sz, cmp); } void heapSort(void* x, int n, size_t sz, int(*cmp)(const void*, const void*)) { buildHeap(x, n, sz, cmp); char* y = (char*)x; for (int i = n - 1; i >= 1; i--){ swap(y, y + i*sz, sz); makeHeap(x, 0, --n, sz, cmp); } } void p(int* x,int n){ for (int k = 0; k < n; k++){ printf("%d ", x[k]); } printf("\n"); } int less(const void* a, const void* b){ return *((int*)a) < *((int*)b); } int greater(const void* a, const void* b){ return *((int*)a) > *((int*)b); } int main(){ int x[] = { 2, 3, 4, 6, 8, 2, 9, 0 }; // 降序全排列 heapSort(x, 8, sizeof(int), less); p(x, 8); // 升序全排列 heapSort(x, 8, sizeof(int), greater); p(x, 8); // 最大的4个元素,在数组末尾 heapSort(x, 4, sizeof(int), less); p(x, 8); }
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++操作mysql 下一篇C++:模板与泛型编程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目