前方高能
思路是:首先我们来分析一下,在一个有重复数的数组中要找到用户输入的第几个最小值,我们首先想到的是将数组排好序,用户找第几个最小值我们就让第几个最小值减1让其等于该下标,输出即可
但是,在这个数组中有重复的数,我们要排序有去除这些重复的数或则是把不同的数往前排;就是把不同的是数放在前面,然后我们比较遍历整个数组找不同的数,将其提前,然后在排序
#include <stdio.h>
int main()
{
int a[10001];
int b;//共有多少个数
int c;//第几小的
int i,j;
int k = 1;//表示新数组的下标
int temp;//临时变量
scanf("%d %d",&b,&c);
for(i = 0;i < b;i ++)
{
scanf("%d",&a[i]);
}
//将不同的数往前排相同的数
for(i = 1;i < b;i ++)//遍历除第一个元素以外的整个数组
{
for(j = 0;j < k;j ++)//遍历寻找排前面和后面的数是否相等
{
if(a[j] == a[i])
{
break;
}
}
if(j == k)//因为如果两者相等那么break直接退出for循环就不会让 j == k
{
a[k] = a[i];
k = k + 1;
}
}
//新数组排序
printf("%d %d",k,c);
if(k < c)
{
printf("NO RESULT");
}
else
{
for(i = 0;i < k - 1;i ++)
{
for(j = 0;j < k - 1 - i;j ++)
{
if(a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
printf("%d",a[c - 1]);
}
return 0;
}