p.s.个人收录用
题目描述
现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于30000。
输入
第一行为n和k; 第二行开始为n个正整数的值,整数间用空格隔开。
输出
第k个最小整数的值;若无解,则输出“NO RESULT”。
样例输入 Copy
10 3 1 3 3 7 2 5 1 2 4 6
样例输出 Copy
3
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <string.h>
//第K小整数
//冒泡排序
void sort(int a[], int n)
{
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
int t = a[j + 1];
a[j + 1] = a[j];
a[j] = t;
}
}
}
}
int main()
{
int n, k;
scanf("%d%d", &n, &k);
int a[10000];
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(&a[0], n);
int num = 1;
int flag = 0;
for (int i = 1; i < n; i++)
{
if (a[i] != a[i - 1])
num++;
if (k == num)
{
printf("%d\n", a[i]);
flag = 1;
break;
}
}
if (!flag)
printf("NO RESULT\n");
}