数组中找有多少个k

发布于 2022-06-02 09:14

问题描述:给你一个数组,有n个数,在这里找,有多少个k?


算法描述:假设数组左右区间,比k小的放入左区间,比k大的放入右区间,直到左边到右区间结束。


#include <bits\stdc++.h>

using namespace std;

int   n,k,a[1010];

void pri()  //调试观察每次处理数据变化

{

for(int i =1;i<=n;i++)

    cout<<a[i]<<" ";

cout<<endl;

system("pause"); 

}

int solv(int l,int r)//查找1到n区间有几个k;

{

    int less = l-1,big = r+1;

//小于k的区间在最左边,大于k的区间在最右边,开始都没有哦! 

    while( l < big)

       {

        if(a[l] < k) swap(a[++less],a[l++]);//放入最小区域 

        else 

   {

        if(a[l] > k) swap(a[--big],a[l]);//放入最大区域 

        else   l++;  //相等,指向下一个数 

        }

       pri();//调试观察每次处理数据变化

       }

    return big - less-1;

}

void init()

{

    srand(time(NULL));

    cin>>n;

    for(int i = 1;i<=n;i++)

        a[i]= rand()%10 +1,cout<<a[i]<<" ";

    cout<<endl;

    cin>>k;

    printf("find how much:%d\n",k);

}

int main()

{   

    init();

    cout<<solv(1,n)<<endl; //查找1到n区间有几个k; 

return 0; 


本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材