查看數組中最小的n個數

思路:找出前n個數最大的值,每次遇到比最大值小的數,交換數值,並重新確定前n個數中的最大值。

代碼:

#include <iostream>
#include<vector>

using namespace std;

void swap1(vector<int> &a,int i,int j)
{
     int temp=a[i];
     a[i]=a[j];
     a[j]=temp;
}

void find_min_n_nums(vector<int> &a,int n)
{
    int max_num_index=0;
    for(int i=1;i<n;i++)
    {
        if(a[i]>a[max_num_index])
            max_num_index=i;
    }

    for(unsigned int j=n;j<a.size();j++)
    {
        if(a[j]<a[max_num_index])
        {
            swap1(a,max_num_index,j);
            for(int i=1;i<n;i++)
            {
              if(a[i]>a[max_num_index])
                   max_num_index=i;
            }
        }
    }

    for(auto i=0;i<n;i++)
        cout<<a[i]<<' ';
    cout<<endl;
}

int main()
{
    vector<int> vec{2,4,3,5,0,2,1,9};
    int nums=4;
    find_min_n_nums(vec,nums);
    return 0;
}

輸出:

2 2 1 0

Process returned 0 (0x0)   execution time : 0.029 s
Press any key to continue.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章