gpt4 book ai didi

java - 如何修复我的合并排序?

转载 作者:行者123 更新时间:2023-11-30 07:28:54 24 4
gpt4 key购买 nike

当我编译合并排序时,它会编译罚款,但没有输出。

这需要递归地完成。另外,我确实在主函数中运行了 printList() 函数,所以并不是我忘记打印列表。过去 30 分钟我一直盯着这个。

public void printList(){
for(int i = 0; i < fullNames.size(); i++){
System.out.println(fullNames.get(i));
}
}

public void sort(){
fullNames = mergeSort(fullNames);
}

public ArrayList<String> extract(ArrayList<String> ex, int low, int high){
ArrayList<String> answer = new ArrayList<String>();
for(int i = low; i <= high; i++){
answer.add(ex.get(i));
}

return answer;
}

public ArrayList<String> merge(ArrayList<String> first, ArrayList<String> second){
int f = 0;
int s = 0;
ArrayList<String> answer = new ArrayList<String>();
while(first.size() > 0 || second.size() > 0){
if(s != second.size() && f != first.size()){
if(first.get(f).compareTo(second.get(s)) > 0){
answer.add(second.get(s));
s++;
}

else if(first.get(f).compareTo(second.get(s)) < 0){
answer.add(first.get(f));
f++;
}
}

else if(f == first.size()){
while(s != second.size()){
answer.add(second.get(s));
s++;
}
}

else{
while(f != first.size()){
answer.add(first.get(f));
f++;
}
}
}

return answer;
}
public ArrayList<String> mergeSort(ArrayList<String> names){
int k = names.size()-1;

if(k > 1){
ArrayList<String> first = extract(names, 0, k / 2);
ArrayList<String> second = extract(names, (k / 2) + 1, k);

mergeSort(first);
mergeSort(second);

return merge(first, second);
}

else{
return names;
}
}

最佳答案

合并中的 while 条件永远不会为 false,因为第一个和第二个的大小永远不会在循环内调整:

while(first.size() > 0 || second.size() > 0){
if(s != second.size() && f != first.size()){
if(first.get(f).compareTo(second.get(s)) > 0){
answer.add(second.get(s));
s++;
}

else if(first.get(f).compareTo(second.get(s)) < 0){
answer.add(first.get(f));
f++;
}
}

else if(f == first.size()){
while(s != second.size()){
answer.add(second.get(s));
s++;
}
}

else{
while(f != first.size()){
answer.add(first.get(f));
f++;
}
}
}

关于java - 如何修复我的合并排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36431977/

24 4 0
文章推荐: java - 如何在 SWT ListViewer 上捕获 Ctrl 键按下和释放
文章推荐: java - 如何将文本设置为禁用的 JTextArea
文章推荐: java - 架构:填充 Hashmap 时如何解决 GC 开销问题
文章推荐: javascript - 想要 : simple HTML file that does disclosure triangle
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com