蓝桥杯算法训练超全习题题解——ALGO-1.区间k大数查询

每日刷题(五十四)

ALGO-1、区间k大数查询

在这里插入图片描述
在这里插入图片描述
这个题还是蛮简单的,数据也不大,可以用int就可以解决,定义一个a[n + 1]数组,然后在m次循环里,定义一个r - l + 1长度的数组b,如果然后把a数组第l到第r数依次赋给数组b,然后定义一个排序函数,得到由大到小排序的数组b,然后输出第k大的数也就是b[k - 1]

详细C代码如下:

#include<stdio.h>

void sort(int a[], int n)
{
	int i, j, t = 0;
	for(i = 0; i < n - 1; i++)
	{
		for(j = i + 1; j < n; j++)
		{
			if(a[i] < a[j])
			{
				t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}
}

int main()
{
	int n;
	scanf("%d", &n);
	int a[n + 1];
	int m;
	int l, r, k;
	
	int i;
	for(i = 1; i <= n; i++)
	{
		scanf("%d", &a[i]);
	}
	
	scanf("%d", &m);
	for(i = 0; i < m; i++)
	{
		scanf("%d %d %d", &l, &r, &k);
		int b[r - l + 1];
		int j;
		int v = 0;
		for(j = l; j <= r; j++)
		{
			b[v++] = a[j];
		}
		sort(b, r - l + 1);
		printf("%d\n", b[k - 1]);
	}
	
	return 0;
}

样例运行结果如下:
在这里插入图片描述

如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!

发布了99 篇原创文章 · 获赞 16 · 访问量 5905

猜你喜欢

转载自blog.csdn.net/qq_44631615/article/details/105243799