Day15 2023/01/22
难度:入门
题目
输入n个整数,找出其中最小的k个整数并按升序输出
本题有多组输入样例
数据范围:1 ≤ n ≤ 1000 ,输入的整数满足:1 ≤ val ≤ 10000
输入描述:
第一行输入两个整数n和k
第二行输入一个整数数组
输出描述:
从小到大输出最小的k个整数,用空格分开。
示例
输入:5 2
1 3 5 7 2
输出:1 2
思路
这题比较简单,我们直接将整数数组中的元素进行升序排列(由小到大),然后输出前k个即可,其中排序的方法有很多种,这里使用c++中的sort
函数实现排序
关键点
sort
函数内部的实现是一种经过优化的快速排序,时间复杂度较低。
算法实现
c++代码实现-sort函数
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, k; //n为数组长度,k为要寻找的最小整数的数量
while (cin >> n >> k) {
int nums[n];
for (int i = 0; i < n; i++) { //输入数据到数组中
cin >> nums[i];
}
sort(nums, nums + n); //数组元素升序排列
for (int i = 0; i < k - 1; i++) { //输出前k个元素
cout << nums[i] << ' ';
}
}
return 0;
}
- 时间复杂度 --- sort函数的时间复杂度为(nlogn)
- 空间复杂度 --- 数组为必要空间,无额外空间
总结
- 对于排序类的题目推荐使用
sort
函数。