是否可以在已存在的选择排序中创建选择排序?比方说,我想按狗的尾巴长度来分类,如果两条狗的尾巴长度相同,我想按它们的名字来分类。你会怎么做?这是代码,我希望他们在同一块代码。
public List<Dog> sortDogsGetTailLength() {
for (int a = 0; a < listOfDogs.size() - 1; a++) {
double minValue = listOfDogs.get(a).getTailLength();
int minIndex = a;
for (int b = a + 1; b < listOfDogs.size(); b++) {
if (minValue > listOfDogs.get(b).getTailLength()) {
minValue = listOfDogs.get(b).getTailLength();
minIndex = b;
}
}
if (minIndex != a) {
Dog temp = listOfDogs.get(a);
listOfDogs.set(a, listOfDogs.get(minIndex));
listOfDogs.set(minIndex, temp);
}
}
return listOfDogs;
}
//Sorted by name
public List<Dog> sortDogsGetName() {
for (int a = 0; a < listOfDogs.size() - 1; a++) {
String minValue = listOfDogs.get(a).getName();
int minIndex = a;
for (int b = a + 1; b < listOfDogs.size(); b++) {
if (listOfDogs.get(b).getName().compareTo(minValue) < 0) {
minValue = listOfDogs.get(b).getName();
minIndex = b;
}
}
if (minIndex != a) {
Dog tempa = listOfDogs.get(a);
listOfDogs.set(a, listOfDogs.get(minIndex));
listOfDogs.set(minIndex, tempa);
}
}
return listOfDogs;
}
1条答案
按热度按时间hs1ihplo1#
也许你可以用
sortDogsGetTailLength()
第一。然后将排序后的列表划分为包含具有相同尾长的狗的子列表。这得花点时间。
然后使用
sortDogsGetName()
. 这也是o(n)。毕竟,您可以将所有子列表合并到单个排序列表中。
如果有什么问题,请纠正我。谢谢!