堆排序
来源:互联网 发布:sql语句例题 编辑:程序博客网 时间:2024/06/05 09:52
建大堆实现的是从大到小的排序
若要从小到大排序,则建小堆
//******************堆排序***************************
void_AdjustDown(int*a,size_t size,intparent)
{
intchild =parent* 2 + 1;
while(child <size)
{
if(child + 1 <size&&a[child] < a[child + 1])
{
++child;
}
if(a[child]>a[parent])
{
swap(a[child],a[parent]);
parent= child;
child =parent* 2 + 1;
}
else
break;
}
}
voidHeapSort(int*a,size_tn)
{
assert(a);
//建大堆
for(inti = (n- 2) / 2; i >= 0; --i)
{
_AdjustDown(a,n, i);
}
//排序
intend =n- 1;
while(end > 0)
{
swap(a[0],a[end]);
_AdjustDown(a, end, 0);
end--;
}
}
voidPrint(int*a,size_tsize)
{
for(inti = 0; i <size; i++)
{
cout <<a[i] <<" ";
}
cout << endl;
}
intmain()
{
inta[] = { 1, 5, 67, 3, 45, 78, 12, 23, 89, 70 };
intsize =sizeof(a) /sizeof(a[0]);
HeapSort(a, size);
Print(a, size);
return0;
}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- OKHttp学习笔记
- Web前端开发推荐阅读书籍-精华
- 第114课:SparkStreaming+Kafka+Spark SQL+TopN+Mysql+KafkaOffsetMonitor电商广告点击综合案例实战(详细内幕版本)
- bower-web包管理器(依赖插件管理)
- spark之DataFrame分析日志文件
- 堆排序
- PHP代码添加注释的几种格式
- leetcode 205 Isomorphic Strings C++
- c++作业7
- JAVA学习总结十四
- Linq 基本用法
- 六月季——复习应考
- ACM天梯赛练习L1-021. 重要的话说三遍
- 设计模式—外观模式