【发布时间】:2021-05-28 05:18:27
【问题描述】:
我想首先根据 Token 对象的 usedNumber 从大到小对它们进行排序。
然后对于具有相同 usedNumber 的令牌,我想根据它们的优先级编号将它们从小到大排序:
名称优先级 usedNumber
1 3
b 2 4
c 3 0
d 4 3
e 5 3
f 6 4
排序后的版本应该首先更大的 usedNumbers 然后更小的优先级:
b 2 4
f 6 4
1 3
d 4 3
e 5 3
c 3 0
下面的代码没有对它们进行正确排序
public class Token {
int usedNumber;
int priority;
String name;
public Queue<Token> reversebubbleSort(Queue<Token> queue)
{
int n = queue.size();
int i;
int j;
Token temp;
boolean swapped;
for (i = 0; i < n - 1; i++)
{
swapped = false;
for (j = 0; j < n - i - 1; j++)
{
int namenumber1 = Integer.parseInt(queue.get(j).priority);
int namenumber2 = Integer.parseInt(queue.get(j+1).priority);
int number1 = queue.get(j).getUsedNumber();
int number2 = queue.get(j+1).getUsedNumber();
if (((number1^5)-namenumber1) < ((number2^5)-namenumber2))
{
// swap arr[j] and arr[j+1]
temp = queue.get(j);
queue.set(j, queue.get(j+1));
queue.set(j+1, temp);
swapped = true;
}
}
// IF no two elements were
// swapped by inner loop, then break
if (swapped == false)
break;
}
return queue;
}
这里的队列类不是来自 java.util。由于我的作业限制,这是我设计的一门课程。 Queue类使用Arraylists来执行。
public class Queue<Token> {
private ArrayList<Token> queue;
public Queue() {
queue = new ArrayList<>();
}
public void add(Token addItem){
//In queues, adding in the back, first in first out.
queue.add(addItem);
}
public void removeFromFront(){
queue.remove(0);
}
public int size(){
return queue.size();
}
public Token get(int location){
return queue.get(location);
}
public void remove(int index){
queue.remove(index);
}
public void set(int location, Token setItem) {
queue.set(location, setItem);
}
}
}
【问题讨论】:
-
您的作业需要实现这种冒泡排序还是仅仅对队列进行排序?
-
不需要实现冒泡排序。可以使用不同的排序方法进行排序@julien.giband
-
您究竟希望
number1^5产生什么?
标签: java bubble-sort