java气泡按Desc/升序对数组中的字符串数据进行排序
我在数组中排序字符串时遇到了问题
我应该从我的代码中得到两个不同的输出,但是我只得到升序的输出
import java.util.*;
public class nextLineArray1
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String names[]=new String[12];
System.out.println("Enter the 12 names: ");
//Load Array
for(int i = 0; i < 12; i++)
{
names[i] = input.nextLine();
}
//Print descending order list
String[] descSort;
descSort=bubbleSortDesc(names);
System.out.println("Names listed sorted in descending order (via BubbleSort): ");
for(int x=0; x < names.length; x++)
{
System.out.println(names[x]);
}
//Print ascending order list
String[] ascSort;
ascSort=bubbleSortAsc(names);
System.out.println("Names listed sorted in ascending order (via BubbleSort): ");
for(int z=0; z < names.length; z++)
{
System.out.println(names[z]);
}
}
public static String[] bubbleSortDesc(String[] names)
{
String temp;
int passNum, i, result;
for(passNum=1; passNum <= 11; passNum++)
{
for(i = 0; i<=(11-passNum); i++)
{
result=names[i].compareToIgnoreCase(names[i+1]);
if(result>0)
{
temp=names[i];
names[i]=names[i+1];
names[i+1]=temp;
}
}
}
return names;
}
public static String[] bubbleSortAsc(String[] names)
{
String temp;
int passNum, i, result;
for(passNum=1; passNum <= 11; passNum++)
{
for(i = 0; i<=(11-passNum); i++)
{
result=names[i].compareToIgnoreCase(names[i]);
if(result>0)
{
temp=names[i-1];
names[i-1]=names[i];
names[i]=temp;
}
}
}
return names;
}
}
解释一下为什么它只是按升序排序,会更有帮助
提前谢谢
# 1 楼答案
事实上你让事情变得很难
对于booble排序:
而且我猜你让它变得非常困难,你可以像这样对它们进行排序和打印:
希望这有帮助
# 2 楼答案
在我看来
bubbleSortDesc
是按升序排序的,而BubbleSortAsc
根本不起作用:所以,在BubbleSortAsc中,你应该:
在BubbleSortDesc中: