是否可以在java中已经存在的选择排序中创建选择排序算法?

niknxzdl  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(370)

是否可以在已存在的选择排序中创建选择排序?比方说,我想按狗的尾巴长度来分类,如果两条狗的尾巴长度相同,我想按它们的名字来分类。你会怎么做?这是代码,我希望他们在同一块代码。

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;
}
hs1ihplo

hs1ihplo1#

也许你可以用 sortDogsGetTailLength() 第一。
然后将排序后的列表划分为包含具有相同尾长的狗的子列表。这得花点时间。
然后使用 sortDogsGetName() . 这也是o(n)。
毕竟,您可以将所有子列表合并到单个排序列表中。
如果有什么问题,请纠正我。谢谢!

相关问题