需要帮助而无需排序功能的排序
答案 0 :(得分:1)
不能仅通过一个循环对数组进行排序。如果您不允许使用sort
方法,可以使用经典的冒泡排序:
for (int i = 0; i < ch.length; i++) {
for (int j = 0; j < ch.length - 1; j++) {
if (ch[j].compareTo(ch[j + 1]) < 0) {
Chocolate temp = ch[j];
ch[j] = ch[j + 1];
ch[j + 1] = temp;
}
}
}
但是您需要in来实现它。
答案 1 :(得分:0)
只要有以下限制,就可以不使用任何类型的常用排序技术就可以进行排序:
在您的情况下,您的示例满足两个约束。
cQuantity
字段排序,该字段是整数。cQuantity
字段在0到19之间。您可以做的是:
Chocolate[20][20]
数组。让我们称之为sorted
。ch
进行迭代,并使用它们的Chocolate
字段作为索引将每个sorted
放入上面的getQuantity
数组中。如果我们有多个Chocolate
和相同的getQuantity
,请将它们添加到同一索引下。sorted
,如果不是null
,则打印其值。代码如下:
Chocolate[][] sorted = new Chocolate[20][20];
for (Chocolate c : ch) {
Chocolate[] bucket = sorted[ c.getQuantity() ];
if (bucket == null) {
bucket = new Chocolate[20];
bucket[0] = c;
sorted[ c.getQuantity() ] = bucket;
}else {
//if we already have entry under this index, find next index that is not occupaed and add this one
for (int i = 0; i < bucket.length; i++) {
if (bucket[i] == null) {
bucket[i] = c;
break;
}
}
}
}
for (Chocolate[] bucket : sorted) {
if ( bucket != null) {
//System.out.println("b");
for (Chocolate c : bucket) {
if (c != null) System.out.println( c.getName() + " " + c.getQuantity() );
}
}
}