求助!为啥过不去
  • 板块学术版
  • 楼主chrispang
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/5/18 16:48
  • 上次更新2024/5/18 19:24:24
查看原帖
求助!为啥过不去
786127
chrispang楼主2024/5/18 16:48

p1923不是在二分时只寻找一边吗?

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int n4, k4;
vector<int> vec2;
vector<int> p1923(int left, int right)
{
    if (left == right) {
        cout << vec2[left] << endl;
        exit(0);
    }
    int i, j, pivot;
    i = left, j = right, pivot = vec2[left];

    while (i < j)
    {
        while (vec2[j] >= pivot && i < j) j--;
        while (vec2[i] <= pivot && i < j) i++;

        if (i < j)
        {
            swap(vec2[i], vec2[j]);
        }
    }
    swap(vec2[i], vec2[left]);
    if (i < k4) p1923(i + 1, right);
    else if(i > k4) p1923(left, i - 1);
    else {
        cout << vec2[i] << endl;
        exit(0);
    }
    return vec2;
}

int main()
{
    cin >> n4 >> k4;
    for (int i = 0; i < n4; i++)
    {
        int t;
        cin >> t;
        vec2.push_back(t);
    }

    p1923(0, vec2.size() - 1);
    return 0;
}
2024/5/18 16:48
加载中...