社区讨论
6TLE,求助,我自己优化的快速排序
P1923【深基9.例4】求第 k 小的数参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo7u3uyn
- 此快照首次捕获于
- 2023/10/27 07:47 2 年前
- 此快照最后确认于
- 2023/10/27 07:47 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
void dkj_sort (long long int*,int,int);
long long int e,n;
int main()
{
long long int i;
cin>>n>>e;
long long int a[n];
for(i=0;i<n;i++)
{
cin>>a[i];
}
dkj_sort(a,0,n-1);
/*for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}*/
return 0;
}
void dkj_sort(long long int array[],int begin,int end)
{
if(begin>=end&&begin==e)
{
cout<<array[e];
return;
}
if(begin>=end)
{
return;
}
int i=begin,f=end;
while(i!=f)
{
while(array[f]>=array[begin]&&i!=f)
{
f--;
}
while(array[i]<array[begin]&&i!=f)
{
i++;
}
if(i !=f)
swap(array[f],array[i]);
}
swap(array[begin],array[i]);
if(e<=i)
dkj_sort(array,begin,i-1);
else
dkj_sort(array,i+1,end);
}
就是只排k出现的那一半
为什么甚至不如sort完输出a[e]
回复
共 2 条回复,欢迎继续交流。
正在加载回复...