🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 按原始顺序打印给定数组中的 n 个最小元素 > 原文: [https://www.geeksforgeeks.org/find-n-smallest-element-given-array-order-array/](https://www.geeksforgeeks.org/find-n-smallest-element-given-array-order-array/) 我们给定了一个由 m 个元素组成的数组,我们需要从该数组中找到 n 个最小的元素,但它们的顺序必须与给定数组中的元素相同。 **示例**: ``` Input : arr[] = {4, 2, 6, 1, 5}, n = 3 Output : 4 2 1 Explanation : 1, 2 and 4 are 3 smallest numbers and 4 2 1 is their order in given array. Input : arr[] = {4, 12, 16, 21, 25}, n = 3 Output : 4 12 16 Explanation : 4, 12 and 16 are 3 smallest numbers and 4 12 16 is their order in given array. ``` 制作原始数组的副本,然后对副本数组进行排序。 对副本数组排序后,保存所有 n 个最小的数字。 此外,对于原始数组中的每个元素,检查它是否存在于 n 个最小的数字中,如果它存在于 n 个最小的数组中,则将其打印出来,否则向前移动。 * 制作 copy_arr []* 排序(copy_arr)* 对于 arr []中的所有元素- * 在 copy_arr 的 n 个最小元素中找到 arr [i] * 如果找到,则打印元素 下面是上述方法的实现: ## C++ ```cpp // CPP for printing smallest n number in order #include <bits/stdc++.h> using namespace std; // Function to print smallest n numbers void printSmall(int arr[], int asize, int n) {     // Make copy of array     vector<int> copy_arr(arr, arr + asize);     // Sort copy array     sort(copy_arr.begin(), copy_arr.begin() + asize);     // For each arr[i] find whether     // it is a part of n-smallest     // with binary search     for (int i = 0; i < asize; ++i)         if (binary_search(copy_arr.begin(),                  copy_arr.begin() + n, arr[i]))             cout << arr[i] << " "; } // Driver program int main() {     int arr[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };     int asize = sizeof(arr) / sizeof(arr[0]);         int n = 5;     printSmall(arr, asize, n);     return 0; } ```