社区讨论

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 条回复,欢迎继续交流。

正在加载回复...