//清理硬盘,备份一下以前的程序
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
#include <iterator>
#include <algorithm>
#include <stdlib.h>
using namespace std;
const char* filename="testm.txt";
typedef istream_iterator<int> istream_itr;
typedef ostream_iterator<int> ostream_itr;
typedef back_insert_iterator< vector<int> > back_ins_itr;
template<typename T>
T lexical_cast(const string& arg)
{
stringstream ss(arg);
T ret;
ss >> ret;
return ret;
}
const unsigned gen_number=1000;
const unsigned max_number=10;
int main(int argc, char *argv[])
{
ofstream output(filename);
for(int i=0;i!=gen_number;++i)output<<rand()<<'\n';
output.close();
ifstream input(filename);
//使用stl的nth_element求前100大的元素
//缺点:需要全部加载入内存,空间复杂度为O(n)
vector<int> num;
copy(istream_itr(input), istream_itr(), back_ins_itr(num));
nth_element(num.begin(),num.begin()+max_number,num.end(),greater<int>());
copy(num.begin(), num.begin()+max_number, ostream_itr(cout, "\n"));
cout<<"------------------------\n";
//堆算法
input.clear();
input.seekg(0);
const int max_number_1=max_number+1;
int num_stack[max_number_1];
string temp;
for(int i=0;i<max_number_1;++i){
input>>temp;
num_stack[i]=lexical_cast<int>(temp);
};
make_heap(num_stack,num_stack+max_number_1,greater<int>());
while(input>>temp){
int t=lexical_cast<int>(temp);
if(num_stack[0]<t){
pop_heap(num_stack,num_stack+max_number_1,greater<int>());
num_stack[max_number]=t;
push_heap(num_stack,num_stack+max_number_1,greater<int>());
}
}
copy(
num_stack,
num_stack+max_number_1,
ostream_itr(cout, "\n")
);
input.close();
system("PAUSE");
return 0;
}
分享到:
相关推荐
在某些情况下,我们可能会遇到CSS设置元素`width: 100%`失效的问题,尤其是在该元素的父元素为`body`时。这是因为`body`元素的宽度可能受到浏览器滚动条、页面边距等因素的影响,导致子元素无法正确地占据100%的宽度...
接下来,我们编写一个名为`find_top_two_elements`的函数,它接受一个列表作为参数,然后返回一个包含最大和第二大元素的元组。以下是函数的实现: ```python def find_top_two_elements(lst): if not isinstance...
接下来,算法从这10个最大值中再次寻找最大值,即全局的前10大元素。这一过程通过调用`TenMax`函数完成。`TenMax`函数接受两个参数:原始数组和之前找到的局部最大值位置数组`LMax`。通过比较`LMax`中的元素,算法...
输入的第一行给出N(0≤100)。再后面的若干行依次输入矩阵各行的元素,用空格作为分隔符,设矩阵中整数的范围都在[−127,127]。 【输出】 输出最大子矩阵的大小。 【输入样例】 4 1 0 1 1 1 1 1 1 1 1 1 1 0 1 -6 -8 ...
<draggable-resizable :x="100" :y="50" :w="200" :h="150"> 这是一个可拖动和可调整大小的元素 ``` 这里,`:x`、`:y`、`:w` 和 `:h` 分别代表元素的初始位置和尺寸。你可以通过绑定 Vue 数据属性来动态改变这些...
在本例中,我们需要找到前100个最小的元素,可以迭代地应用快速选择,每次找到一个新元素并更新优先队列。 4. **并行处理(Parallel Processing)**:如果数据存储在磁盘上,可以考虑使用Java的并行流或者多线程来...
标题 "现有1~100共一百个自然数,已随机放入一个有98个元素的数组a[98]" 暗示了一个编程问题,其中涉及到数组、随机数和计数算法。在这个问题中,我们需要处理一个大小为98的数组`a`,其元素是从1到100的一百个...
标题和描述中提到的"各种网页FLSH元素"是一个针对初学者的资源包,包含超过100个原始的FLSH(Flash)元素,这些元素是构建动态、互动网页的重要组成部分。在本文中,我们将深入探讨Flash在网页制作中的应用,以及...
编写一个在具有m行n列的二维数组各元素中找出最大元和最小元并显示在屏幕上的函数模板,并通过主函数对它进行调用以验证其正确性。例如,可设计该函数模板的原型为: template <class Type> void maxMin (Type *A,...
标题中的“java一亿数字取前100个(3秒钟获取)Java算法”涉及到一个经典的计算机科学问题,即在海量数据中快速找到最大的前N个元素。这个问题在大数据处理、排序以及性能优化等领域有着广泛的应用。在这个场景下,...
3. **默认宽度为100%**:如果未指定宽度,块元素的宽度默认为包含它的父元素的宽度。 4. **可以嵌套其他块元素或内联元素**:块元素内部既可以放置其他块元素也可以放置内联元素。 5. **通常用于结构化布局**:块...
- 如果数组较大且删除操作频繁,考虑使用其他数据结构,如链表或集合,它们更适合动态添加和删除元素。 了解这些知识点后,你可以根据实际需求在VB6中有效地处理数组元素的删除操作。记住,虽然VB6的数组操作相对...
在编程领域,鞍点(Saddle Point)是指在一个矩阵中,某个元素在同一行中最大,同时在同一列中最小。这是一个相对特殊的位置,因为通常我们关注的是最大值或最小值,而鞍点则结合了这两种特性。在Java编程中,解决这...
对于数组实现的栈,我们预先定义了一个固定大小,当栈达到这个大小时,再往里添加元素就会导致溢出。然而,"整数的栈 容纳任意多元素"的目标要求我们克服这个问题,即栈应该能自动扩展其容量,以适应任何数量的整数...
综上所述,这个ICO素材包是一个宝贵的资源库,对于从事网页设计、UI设计、应用开发的人员来说,这些100*100像素的大图标能够提供高质量的视觉元素,提升作品的专业度和吸引力。通过巧妙地利用这些素材,设计师可以...
在处理数组时,我们通常需要使用索引来访问数组的各个元素。 假设我们有一个已知大小的数组,存储在内存的连续区域。我们首先需要初始化两个变量,一个用来保存当前找到的最大值(max),另一个用来保存最小值(min...
数组对应元素相加的 C++ 程序设计 C++ 计算机软件基础知识点: 1. 数组的定义和初始化:在 C++ 中,数组是一种数据结构,可以存储多个相同类型的元素。数组的定义需要指定数组的名称和数组的大小。例如,在本实验...
在"100+大数据可视化炫酷大屏Html5模板"中,我们能够找到一系列专为这些行业设计的高质量模板。这些模板采用Html5技术,使得它们能够在各种设备上流畅运行,包括桌面、平板和移动设备,为用户提供无缝的浏览体验。...
`:after`是CSS中的一个伪元素选择器,用于在元素内容之后插入内容。本话题将深入探讨如何利用`:after`伪元素来实现分割线和气泡效果。 首先,让我们理解`:after`的基本语法。`:after`伪元素紧跟在选择器后面,然后...
例如,要使一个元素向右移动100px并向下移动20px,我们可以设置以下CSS: ```css position: absolute; left: 100px; top: 20px; ``` 2. **相对定位**: 相对定位则保留元素在文档流中的原始位置,但可以在...