堆排序
来源:互联网 发布:湖北十一选五遗漏数据 编辑:程序博客网 时间:2024/06/09 13:05
一 简介
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
二 备忘
#include <stdio.h>int n;int heap_len;void make_heap(int* A, int i){int min = i;int l = 2*i;int r = 2*i + 1;if (l <= heap_len && A[l] > A[min])min = l;if (r <= heap_len && A[r] > A[min])min = r;if (i != min){int tmp = A[min];A[min]= A[i];A[i] = tmp;make_heap(A, min);}}void heap_sort(int *A, int n){int i;for(i = n/2; i >= 1; --i)make_heap(A, i);int tmp;for (i = n; i > 1; --i){tmp = A[i];A[i]= A[1];A[1] = tmp;heap_len--;make_heap(A, 1);}}int main(){int a[11] = {0, 1,5,3,5,4,4,234,2,64,3};n = 10;heap_len = 10;heap_sort(a, 10);int i;for (i = 1; i <= n; ++i){printf("%d ", a[i]);}printf("\n");return 0;}
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- php时间戳与字符串时间
- ZooKeeper编程指南(一)
- AndroidManifest.xml文件详解(activity)(四)
- ZooKeeper编程指南(二)
- ZooKeeper编程指南(三)
- 堆排序
- ZooKeeper编程指南(四)
- 付费心理分析
- RSA Lib Chapter 2 Cryptography (RSA实验室 第二章,密码学)
- 软件测试面试时经常被问到的面试题
- python的dictionary(map)实现
- 为什么晚上咳嗽很厉害
- Rational Rose 启动和退出的错误,提示java.lang.ClassNotFoundException
- 上下文菜单(ContextMenu)