数组中的快速排序方法

问题描述 投票:0回答:1

我用快速排序算法对这个对象数组进行了排序。 它将按部门值排序。 但问题是有重复的部门价值。 我想编写代码,如果部门列中有重复值, 然后按 id 的升序对对象进行排序。

我该如何处理?

java algorithm sorting object quicksort
1个回答
1
投票

您可以在您的

compareTo
类上创建一个
Staff
方法,它根据
dep
id
(当有平局时)进行比较:

    int compareTo(Staff other) {
        int res = dep.compareTo(other.dep);
        return res != 0 ? res : id - other.id;
    }

现在在您的

quickSort
代码中,只需使用此方法进行比较:

            Staff pivot = staffs[i];
            while (j > i)
            {
                while (staffs[i].compareTo(pivot) <= 0 && i < end && j > i) {
                    i++;
                }
                while (staffs[j].compareTo(pivot) >= 0 && j > start && j >= i) {
                    j--;
                }
                if (j > i)
                    swap(staffs, i, j);
            }
© www.soinside.com 2019 - 2024. All rights reserved.