cb52a_c++_STL_堆排序算法make_push_pop_sort_heap

cb52a_c++_STL_堆排序算法make_push_pop_sort_heap
heapsort堆排序算法
make_heap()-特殊的二叉树,每一个节点都比根小,根就是最大的数。大根堆,也可以做成 小根堆
寻找最大数,最大数排在最前面。或者寻找最小数,最小数排在最前面
push_heap()
pop_heap()
sort_heap()
把vector做成像一个堆
/*cb52a_c++_STL_堆排序算法make_push_pop_sort_heap
heapsort堆排序算法
make_heap()-特殊的二叉树,每一个节点都比根小,根就是最大的数。大根堆,也可以做成 小根堆
寻找最大数,最大数排在最前面。或者寻找最小数,最小数排在最前面
push_heap()
pop_heap()
sort_heap() 把vector做成像一个堆
*/ #include <iostream>
#include <algorithm>
#include <vector> template <class TT2>
void print2(TT2 &ivec)
{
for (TT2::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
cout << *iter << ' ';
cout << endl;
} using namespace std; int main()
{
vector<int> ivec;
for (int i = ; i <= ; ++i)
ivec.push_back(i);
for (int i = ; i <= ; ++i)
ivec.push_back(i);
for (int i = ; i <= ; ++i)
ivec.push_back(i); cout << "原始数据:" << endl;
print2(ivec);
cout << "把ivec数据做成一个堆:" << endl;
make_heap(ivec.begin(),ivec.end());
print2(ivec); cout << "取出一个最大的数据" << endl;
pop_heap(ivec.begin(),ivec.end());//把最大的放到最后一个位置。
print2(ivec);
cout << "删除最后一个数" << endl;
ivec.pop_back();
print2(ivec); ivec.push_back();
push_heap(ivec.begin(),ivec.end());//把17加入到堆 cout << "堆排序,变成普通的排序" << endl;
sort_heap(ivec.begin(),ivec.end());
print2(ivec); return ;
}
cb52a_c++_STL_堆排序算法make_push_pop_sort_heap的更多相关文章
- 堆排序算法 java 实现
堆排序算法 java 实现 白话经典算法系列之七 堆与堆排序 Java排序算法(三):堆排序 算法概念 堆排序(HeapSort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特 ...
- 必须知道的八大种排序算法【java实现】(三) 归并排序算法、堆排序算法详解
一.归并排序算法 基本思想: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 归并 ...
- 堆排序算法(C#实现)
在软件设计相关领域,“堆(Heap)”的概念主要涉及到两个方面: 一种是数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆). 另一种是垃圾收集存储区,是软件系统可以编程的内存区域. 本文 ...
- 【java排序】 归并排序算法、堆排序算法
一.归并排序算法 基本思想: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 归并 ...
- Python3标准库:heapq堆排序算法
1. heapq堆排序算法 堆(heap)是一个树形数据结构,其中子节点与父节点有一种有序关系.二叉堆(binary heap)可以使用一个有组织的列表或数组表示,其中元素N的子元素位于2*N+1和2 ...
- Javascript中的冒泡排序,插入排序,选择排序,快速排序,归并排序,堆排序 算法性能分析
阿里面试中有一道题是这样的: 请用JavaScript语言实现 sort 排序函数,要求:sort([5, 100, 6, 3, -12]) // 返回 [-12, 3, 5, 6, 100],如果你 ...
- Heapsort 堆排序算法详解(Java实现)
Heapsort (堆排序)是最经典的排序算法之一,在google或者百度中搜一下可以搜到很多非常详细的解析.同样好的排序算法还有quicksort(快速排序)和merge sort(归并排序),选择 ...
- 堆排序算法的java实现
堆积排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素.堆排序是不稳定的排序方法,辅助空间为O(1), 最坏时间复杂度为O ...
- 排序系列 之 堆排序算法 —— Java实现
基本概念: 二叉堆是完全二叉树或者是近似完全二叉树. 当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆. 当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆. 一般将二叉堆简称 ...
随机推荐
- Nginx判断客户端实现301跳转
set $a 0; #第一个条件 if ($uri !~* /(.*).php(.*)){ set $a 1; } #第二个条件 if ($http_user_agent ~* (up.UCBrows ...
- 百度地图结合ECharts实现复杂覆盖物(Overlay)
先来看效果图 一 前置知识 官方Overlay-覆盖物的抽象基类 方法 返回值 描述 initialize(map: Map) HTMLElement 抽象方法,用于初始化覆盖物,当调用map.add ...
- Python 每日一练(3)
引言 今天的每日一练,学习了一下用Python生成四位的图像验证码,就是我们常常在登录时见到的那种(#`O′) 思路分析 正如常见的那种图像验证码,它是由数字和字母的随机组合产生的,所以我们首先的第一 ...
- CustomerDAO及CustomerImpl的实现 & CustomerImpl的单元测试
BaseDAO:封装了针对于数据表的操作,提供通用的方法,完成后续针对具体表的逻辑 CustomerDAO:此接口用于规范 针对customers表的常用操作 CustomerDAOImpl:继承Ba ...
- 一、React初体验之NodeJS环境搭建
一.NodeJS安装 我博客中有相关文章,此处不再赘述. 二.相关模块安装 在使用React的时候需要安装一些相关模块: 1.babel npm install babel -g --save-dev ...
- 02 . Mysql基础操作及增删改查
SQL简介 SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开发. SQL语句四大 ...
- 项目打包成手机app 通过什么打包?
项目打包成手机app 通过什么打包? 1.HbuildX注册邮箱账号 2.新建-app,然后将自动生成的除manifest.json之外的所有文件删除,然后将vue项目build之后生成的dist文 ...
- winxp无法访问win10教育版共享资源的问题处理
一.问题来源: dell5460笔记本上一个winxp系统虚拟机,访问一台lenovoT470笔记本win10教育版系统上的共享资源(使用命令行方式:net use s: \\172.18.45.10 ...
- 前后端分离,如何在前端项目中动态插入后端API基地址?(in docker)
开门见山,本文分享前后端分离,容器化前端项目时动态插入后端API基地址,这是一个很赞的实践,解决了前端项目容器化过程中受制后端调用的尴尬. 尴尬从何而来 常见的web前后端分离:前后端分开部署,前端项 ...
- GTA5侠盗猎车5中文版破解版绿色版汉化版迅雷下载地址种子实测可用
GTA5(侠盗猎车5)中文版下载地址(实测可用) 迅雷下载地址:https://www.90pan.com/b1548988 一定要关闭安全软件并且加入白名单 实测通过,关闭杀毒软件可以完美运行,最好 ...