OR111. 查找第K大的元素
描述
给定一个无序的整型数组A[n],数组大小大于等于3,允许有值相同的元素;请设计算法找到该数组排序后第三大的元素值并输出.输入描述
一个非空的整数数组(至少有3个元素,可正可负)输出描述
第三大的元素值示例1
输入:
[1,2,3,4,5]
输出:
3
示例2
输入:
[1,1,2,2,3]
输出:
2
示例3
输入:
[6,5,4,4,1,2]
输出:
4
C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-07-30
#include <stdio.h> int main() { char c; int A[1000]; int count=0; int k=0; scanf("%c",&c); while(c!=']') { scanf("%d",&A[count]); count++; scanf("%c",&c); } for(int i=0;i<2;i++) { for(int j=0;j<count;j++) { if(A[j]>A[k]) k=j; } A[k]=-300; } for(int j=0;j<count;j++) { if(A[j]>A[k]) k=j; } //printf("%d",A[k]); printf("%d",A[k]); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2021-12-26
#include <stdio.h> int main() { char c; int array[500]; int count = -1; scanf("%c", &c); while (c != ']') { count++; scanf("%d", &array[count]); scanf("%c", &c); } int temp=0; for (int i = 0; i < count; i++) { for (int j = i + 1; j <= count; j++) { if (array[i] > array[j]) { temp = array[i]; array[i] = array[j]; array[j] = temp; } } } printf("%d", array[count - 2]); return 0; }