我需要帮助使用冒泡排序并对其进行排序,无论是升序还是降序:(
int[] number = {12, 5, 6, 14, 18};
int[] number = new int[5];
String[] mark = new String[10];
String evenOrOdd = "";
String output = "";
JTextArea textArea = new JTextArea(12,30);
for(int i = 0; i < number.length; i++) {
number[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter a number"));
if (number[i] % 2 == 0) {
evenOrOdd = "even";
}
else {
evenOrOdd = "odd ";
}
mark[i] = "";
for(int j = 0; j < number[i]; j++) {
mark[i] = mark[i] + "*";
}
output = output + number[i] + "\t";
output = output + evenOrOdd + "\t";
output = output + mark[i] + "\n";
}
textArea.setText("numbers\ttype\tgraph\n" + output);
JOptionPane.showMessageDialog(null,
textArea,
"OUTPUT",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
}
代码缺少冒泡排序,我不知道放在哪里。 有人可以帮帮我吗?它不需要用户输入任何内容,
答案 0 :(得分:0)
支持升序和降序的方式是将Comparator
传递给sort()
方法并使用它来测试元素比较的结果,例如
public static void bubbleSort(int[] numero, Comparator<Integer> comp) {
int n = numero.length;
int temp = 0;
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - i); j++) {
if (comp.compare(numero[j - 1], numero[j]) > 0) {
temp = numero[j - 1];
numero[j - 1] = numero[j];
numero[j] = temp;
}
}
}
}
升序是Comparable
的默认行为,例如Integer
。所以我们可以委托到compareTo()
喜欢,
private static Comparator<Integer> ascending = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
};
然后降序与升序相反,所以委托并反转
private static Comparator<Integer> descending = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return -ascending.compare(o1, o2);
}
};
然后测试
public static void main(String arg[]) {
int[] arr = { 10, 30, 20 };
System.out.println(Arrays.toString(arr));
bubbleSort(arr, ascending);
System.out.println("Ascending: " + Arrays.toString(arr));
bubbleSort(arr, descending);
System.out.println("Descending: " + Arrays.toString(arr));
}
输出
[10, 30, 20]
Ascending: [10, 20, 30]
Descending: [30, 20, 10]