求包含n(n>1)个元素的无序序列中第k小的元素。

该程序利用C++的STL库中的priority_queue来找出无序序列中第k小的元素。用户输入序列的大小n和目标位置k,程序将读取序列并输出第k小的数。示例展示了不同输入下的正确输出,强调了程序的通用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求包含n[n>1]个元素的无序序列中第k小的元素。

题目描述

【问题描述】

编写一个实验程序,利用STL中的priority_queue(优先队列)求出包含n个元素的无序整数序列中第k小的元素,其中n和k由用户输入。

【输入形式】第一行为一个整数,表示n的值。

                第二行为n个整数,每个整数之间以一个空格间隔。

                第三行为一个整数,表示k的值。

【输出形式】第k小的元素。

【样例输入1】5

                  1 2 4 3 5

                  3

【样例输出1】3
【样例说明1】序列 1 2 4 3 5中第3小的数是3

【样例输入2】5

                  1 2 4 3 5

                  4

【样例输出2】4
【样例说明2】序列 1 2 4 3 5中第4小的数是4

【样例输入3】6

                  12 6 9 10 7 56

                  1

【样例输出3】6
【样例说明3】序列 12 6 9 10 7 56中第1小的数是6

【样例输入4】6

                  12 6 9 10 7 56

                  6

【样例输出4】56
【样例说明4】序列 12 6 9 10 7 56中第6小的数是56

【评分标准】

  1. 要求利用STL中的priority_queue(优先队列)实现,不能使用数组。

  2. 程序要求具有通用性,对于每一个测试数据要求都能通过,通过一组测试数据得20分。

C++程序答案

#include <iostream>
#include<queue>
using namespace std;

int main()
{
	int i,zbf_n,a,k;
	priority_queue<int, vector<int>, greater<int> >  zbf_queue;
	cin >> zbf_n;
	for(i=0;i<zbf_n;i++){
		cin >> a;
		zbf_queue.push(a);
	};
	cin >> k;
	for(i=1;i<k;i++){
		zbf_queue.pop();	
	};
	cout << zbf_queue.top();
	
	return 0; 
 } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rich_Z_b_f

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值