int QuickSort(int a[], int l, int r, int k)
{
if(l >= r) return a[l];
int i = l - 1, j = r + 1, x = a[l];
while(i < j)
{
do i ++; while(a[i] < x);
do j --; while(a[j] > x);
if(i < j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
if(k<=j) return QuickSort(a, l, j, k);//j表示基准元素,用《=是因为这个区间l到j包括了j
else return QuickSort(a, j+1, r, k);
}
int findKthLargest(int* nums, int numsSize, int k){
return QuickSort(nums, 0, numsSize - 1, numsSize - k );//numsSize-k表示的是数组下标例如在5个数中第二大的元素的数组下标是5-2=3实际上是第四个数
}
topk 215leetcode
于 2023-01-15 16:01:25 首次发布
这段代码定义了一个名为intQuickSort的快速排序函数,用于对整数数组进行排序。它使用了分治策略,以x为基准将数组分为两部分。同时,findKthLargest函数利用快速排序找到数组中第k大的元素。这里的k是基于数组大小的索引位置计算的。
摘要由CSDN通过智能技术生成