编程笔试题
题目:无序整数序列,求其中第K大的数。
例如:输入第一行为整数序列,数字用空格分隔,如45 67 33 21
输入第二行一个整数k,如:2
输出第k大的数:45
思路:先将数组排序,由大到小的顺序,然后找出第k-1角标的数字,即为所求。
备注:网上笔试题,代码是参考网上别人的,具体出处找不到了,请谅解。摘抄记录下来方便日后学习。如果有问题尽请批评指正,希望可以和大神一起交流。
java代码如下:
import java.util.Scanner;
public class Sorting0{
public int[] sort(int[] num){
for(int i=0;i<num.length;i++){
for(int j=0;j<num.length-i-1;j++){
if(num[j]<num[j+1]){
int n=0;
n=num[j];
num[j]=num[j+1];
num[j+1]=n;
}
}
}
return num;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String[] nums = null;
nums = sc.nextLine().split(" ");
int num[]=new int[nums.length];
for(int i=0;i<num.length;i++){
num[i]=Integer.valueOf(nums[i]);
}
String n=sc.nextLine();
int k=Integer.parseInt(n);
Sorting0 s=new Sorting0();
s.sort(num);
System.out.println(num[k-1]);
}
}