第K极值(排序)

题目描述:

给定一个长度为N(0< n< =10000)的序列,保证每一个序列中的数字a[i]是小于int的非负整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0< k< =n)

输入格式:

输入格式: 第一行为2个数n,k(含义如上题) 第二行为n个数,表示这个序列

输出格式:

输出格式: 如果m为质数则 第一行为'YES'(没有引号) 第二行为这个数m 否则 第一行为'NO' 第二行为这个数m

样例输入:

5 2

1 2 3 4 5

样例输出:

YES

2

提示:

对于第K大的详细解释: 如果一个序列为1 2 2 2 2 3 第1大 为3 ,第2大为2,第3大为2,第4大为2,第5大为1,第K小与上例相反 另外需要注意的是最小的质数是2,如果小于2的话或为负数时,请直接输出NO

时间限制: 1000ms

空间限制: 256MB

代码如下:

#include<bits/stdc++.h>

using namespace std;

long long n,a[1000001]={},m;

int zhi(int x){

for(int i=2;i<=sqrt(x);i++){

if(x%i==0) return 0;

}return 1;

}

int main(){

scanf("%d%d",&n,&m);

for(int i=0;i<n;i++) scanf("%d",&a[i]);

sort(a,a+n);

int k=a[n-m]-a[m-1];

if(zhi(k)&&k>=2) cout<<"YES\n";

else cout<<"NO\n";

cout<<k;

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数组是一种数据结构,用于存储一组相同类型的数据。数组的定义包括数据类型和数组名,可以在程序中声明并初始化。 数组的引用可以通过数组名和下标来访问数组中的元素。下标从0开始,表示数组中的第一个元素。 数组的输出可以通过循环遍历数组中的元素,逐个输出到屏幕或文件中。 数组的可以通过循环遍历数组中的元素,找到最大或最小。 数组的排序可以使用各种排序算法,如冒泡排序、快速排序等,将数组中的元素按照一定的顺序排列。 数组的查找可以使用线性查找或二分查找等算法,找到数组中指定元素的位置或。 ### 回答2: 数组(Array)是一种数据结构,它相当于一组有序的变量。数组定义了一个可以同时存储多个数据项的存储区域,其中每个数据项都有一个唯一的索引来识别其位置。 数组的引用可以通过数组名和索引来实现。数组名表示整个数组的首地址,索引表示需要获取的数组元素的位置,通过组合使用数组名和索引可以准确定位到需要操作的数组元素。 数组的输出可以通过遍历数组中的每一个元素来实现。在遍历过程中,可以将每个元素输出到屏幕上或保存到文件中。常用的遍历方式有for循环和foreach循环。 数组的可以通过遍历数组中的所有元素来实现。可以分为最大和最小两种。在遍历过程中,可以通过比较每个元素和当前最大或最小的大小关系,来更新最大和最小。 数组的排序可以用冒泡排序、选择排序、插入排序、快速排序等多种算法实现。排序可以将数组元素按照一定的规律进行重新排列,从而使数组元素按照一定的顺序排列。 数组的查找可以根据数组元素的或者索引来实现。线性查找是一种常见的查找算法,在遍历整个数组的过程中,依次比较数组元素的,直到找到目标元素或者遍历完整个数组。二分查找是一种更高效的算法,其基本思想是将有序数组不断地分成两个部分,在每个部分中都进行查找,直到找到目标元素或者发现无法找到目标元素为止。 在实际的编程过程中,数组是一种常见的数据类型,掌握数组的定义、引用、输出、排序和查找等基本操作是非常重要的。同时,掌握不同的数组操作算法,能够提高编程的效率和代码的质量。 ### 回答3: 数组是相同数据类型的一组变量的集合。每个变量都被称为数组元素,每个元素由一个索引标识。这个索引可以是一个整数或一个表达式,通常用来访问数组中的数据。在计算机编程中,数组是一种重要的基本数据结构,并被广泛应用于数据处理和计算。 数组的引用是通过使用数组名和索引来获取元素的。索引从0开始,第一个元素的索引为0,第二个元素的索引为1,以此类推。要引用数组中的元素,只需要使用数组名和索引,例如array[0]表示数组array中的第一个元素。 数组的输出可以使用循环语句来实现,例如for循环语句。循环计数器可以设置为数组大小减1,通过访问数组的每个元素来输出数组的。例如: for(i=0; i<array_size; i++) { printf("%d ", array[i]); } 数组的可以通过遍历所有元素并比较它们的来确定。最大可以通过将数组中的第一个元素设置为当前最大,并使用一个循环来遍历数组并比较每个元素的来实现。同样,最小可以通过将数组中的第一个元素设置为当前最小,并使用一个循环来遍历数组并比较每个元素的来实现。 数组的排序可以使用不同的算法来实现,例如插入排序、选择排序、冒泡排序、快速排序等。在这些算法中,元素的重新排序是通过比较两个元素的来实现的,并使用适当的交换操作。通过排序,数组中的元素可以按照升序或降序的顺序进行排列。 数组的查找是在数组中查找给定元素的过程。可以使用线性搜索或二分搜索等算法来实现。在线性搜索中,数组的元素逐个扫描直到找到所需元素。在二分搜索中,数组必须按照递增(或递减)的顺序排列,然后在数组的中间位置开始进行搜索,并将搜索区域逐步缩小,直到找到所需元素或搜索区域为空为止。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值