用快排解决第k小数问题

每排完一次后,由于基准数的左右都完成了相对大小的排列,可以把基准数的序号与k进行比较,如果不是,则判断进入左半部分或者右半部分,平均情况下时间复杂度为O(n)

#include
using namespace std;
#define ll long long
const int N = 1e5+5; 
int a[N];
int n,k;
int quicksort(int l,int r) {
  if(l=temp)
		 j--;
		if(ik)
	quicksort(l,i-1);
	else
	quicksort(i+1,r);
  }
}
int main() {
	cin >> n >> k;//n个元素,第k小数 
	for(int i=1;i<=n;i++)
	 cin >> a[i];
	int num = quicksort(1,n);
	cout << num << endl;
	return 0;
}

用快排解决第k小数问题_第1张图片

你可能感兴趣的:(用快排解决第k小数问题)