C++ 查找数组中第k小的数

/**
题目描述
给定一个整数数组a[0,...,n-1],求数组中第k小数

输入描述
首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n
然后输出n个整形元素,每个数的范围[1, 5000]

输出描述
该数组中第k小数

样例输入
4 2
1 2 3 4

样例输出
2
**/
#include
using namespace std;

int main(){
    int n,k;
    cin>>n>>k;
    int a[n];
    int b[k];
    for(int i=0;i>a[i];
    }
    int i=0;
    while(i=a[i]){
                // then a[i] should be at the j-th pos in array b
                // the element after the j-th pos in array-b will be moved forward one step
                // 如果在数组b中找到b[j]大于a[i],则a[i]的数值应该被放置到数组b的第j个位置上
                // 并且数组b的第j个位置中的元素应该依次顺序向后移动一位

                /** 值得注意的是,这里并不出需要去重,如果在原始数组a中具有相同的元素,则它们将在数组b中重复出现 **/

                for(int p=k-1;p>j;p--){
                    // 实现覆盖
                    b[p]=b[p-1];
                }
                b[j]=a[i];
                break;
            }
            // 如果数组b中的所有元素都比a[i]小或者等于a[i]
            // 则当前的a[i]元素对于更新数组b是没有作用的,故而跳出此次遍历,继续向后读取下一个a[i]元素
        }
        i+=1;
        //
    }
    cout<

 

你可能感兴趣的:(C++)