社区讨论
本人java代码本地运行正确,但提交到洛谷后报编译错误,不知原因。
P1923【深基9.例4】求第 k 小的数参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo1u2mul
- 此快照首次捕获于
- 2023/10/23 02:59 2 年前
- 此快照最后确认于
- 2023/11/03 03:32 2 年前
JAVA
import java.util.ArrayList;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
System.out.println("Please input the quantity of numbers: ");
Scanner scan = new Scanner(System.in);
int qty = scan.nextInt();
int m=scan.nextInt();
ArrayList<Integer> test = new ArrayList();
for(int i = 0; i < qty; i++){
test.add(scan.nextInt());
}
scan.close();
Hello zhy = new Hello();
zhy.quickSort(test);
zhy.find(test,m);
}
public void quickSort(ArrayList<Integer> al){
int size = al.size();
int mid = size / 2;
int mid_value = al.get(mid);
ArrayList<Integer> al_left = new ArrayList();
ArrayList<Integer> al_right = new ArrayList();
for(int i = 0; i < size; i++){
if(i == mid){
continue;
}
int element = al.get(i);
if(element <= mid_value){
al_left.add(element);
}else{
al_right.add(element);
}
}
if(al_left.size() > 1){
quickSort(al_left);
}
if(al_right.size() > 1){
quickSort(al_right);
}
al.clear();
al.addAll(al_left);
al.add(mid_value);
al.addAll(al_right);
}
public void find(ArrayList<Integer> al,int index){
int size=al.size();
if(size<index||size<1){
return;
}
int js=0;
for(int i=0;i<al.size();i++){
if(al.get(i)!=al.get(i+1)){
js++;
if(js==index){
System.out.println(al.get(i+1));
break;
}
}
}
}
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...