题目描述:
在未排序的数组中找到第k个最大元素。请注意,你需要找的是数组排序后的第k个最大的元素而不是第k个不同的元素。
示例 1:
输入:3 2 1 5 6 4和 k=2
输出:5
示例 2:
输入3 2 3 1 2 4 5 5 6和 k=4
输出:4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
题目分析:
这道题主要考察的是排序的相关知识,通过给一个数组进行排序然后再找出第k大的元素并返回就可以了。
解题代码:
#include <stdio.h>
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int find_kth_largest(int *nums,int numsize,int k){
//冒泡排序
int i,j;
for(i=0;i<numsize;i++)
{
for(j=i+1;j<numsize;j++)
{
if(nums[i]<nums[j])
swap(&nums[i],&nums[j]);
}
}
return nums[k-1];
}
int main(int argc,const char *argv[])
{
int arr[10]={1,3,6,5,4,8,9,3,0,2};
int tmp;
tmp=find_kth_largest(arr,10,3);
printf("%d\n",tmp);
for(int i=0;i<10;i++)//排序结果输出,看排序是否正确
printf("%d ",arr[i]);
return 0;
}