堆排序
来源:互联网 发布:手机怎样申请淘宝小号 编辑:程序博客网 时间:2024/06/02 04:44
// 堆排序void heap_sort(int A[LENGTH])//堆排序算法{int i;int heap_size;heap_size = LENGTH;build_max_heap(A);for(i = LENGTH; i > 0; i--){exchange(A, 0, i-1);heap_size--;max_heapify(A, 1, heap_size);}}void max_heapify(int A[LENGTH], int i, int heap_size)// 保证最大堆性质,对A[i-1]进行“下降”{int l, r;//左儿子和右儿子下标int largest;//最大值下标l = 2 * i - 1;r = 2 * i;if(l <= heap_size - 1 && A[l] > A[i-1])largest = l;elselargest = i - 1;if(r <= heap_size - 1 && A[r] > A[largest])largest = r;if(largest != i - 1){exchange(A, i - 1, largest);max_heapify(A, largest + 1, heap_size);}}void exchange(int A[LENGTH], int i, int j){int temp;temp = A[i];A[i] = A[j];A[j] = temp;}void build_max_heap(int A[LENGTH])//创建最大堆{int heap_size;int i, n;heap_size = LENGTH;n = floor((double)(LENGTH)/2);for(i = n; i > 0; i--)max_heapify(A, i, heap_size);}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- Android存储访问及目录
- 强力镇定剂
- 常见排序算法小结
- linux入门基础——命令行bash的基本操作
- 【啊哈!算法】算法11:堆——神奇的优先队列(上)
- 堆排序
- 最近一直是web前段,没什么意思,所以就不发资料了
- The xxx collides with a package/type
- 无反和单反
- [leetcode][search] Search in Rotated Sorted Array II
- 【坐在马桶上看算法】算法12:堆——神奇的优先队列(下)
- shell脚本执行的几种方式
- 黑马程序员----常见对象
- 详解JavaScript模块化开发