java快速排序多个条件
我想使用快速排序对我的对象进行排序。 名为Person的对象包含两个字段(firstname和lastname)。java快速排序多个条件,java,quicksort,Java,Quicksort,我想使用快速排序对我的对象进行排序。 名为Person的对象包含两个字段(firstname和lastname)。 班级人员{ 私人名字; 私人姓氏; //+吸气剂/塞特 } 它应该按姓氏排序,如果姓氏相同,则按名字排序。 所以如果我有人[“米勒”、“汤姆”、“史密斯”、“杰瑞”、“米勒”、“亚历克斯”] 输出必须为“Miller”、“Alex”;“米勒”、“汤姆”、“史密斯”、“杰瑞”。 按姓氏排序是可行的,但我不知道如何实现第二部分 下面是代码片段: public void快速排序(列出记录
班级人员{
私人名字;
私人姓氏;
//+吸气剂/塞特
}
它应该按姓氏排序,如果姓氏相同,则按名字排序。 所以如果我有人[“米勒”、“汤姆”、“史密斯”、“杰瑞”、“米勒”、“亚历克斯”] 输出必须为“Miller”、“Alex”;“米勒”、“汤姆”、“史密斯”、“杰瑞”。 按姓氏排序是可行的,但我不知道如何实现第二部分 下面是代码片段:
public void快速排序(列出记录,左整数,右整数){
int index=分区(记录,左,右);
如果(左<索引-1){
快速排序(记录,左,索引-1);
}
如果(索引<右){
快速排序(记录、索引、右侧);
}
}
公共int分区(列表记录,int左,int右){
int i=left,j=right;
个人tmp;
Person pivot=records.get(左);
while(i 0){
j--;
}
//托多:这里我需要一些东西,比如如果姓氏相同,比较名字
如果(i为您的Person
类定义compareTo
方法。比较姓,如果匹配,则比较姓:
public int compareTo(Person to) {
int cmp = this.lastName.compareTo(to.lastName);
if (cmp == 0)
cmp = this.firstName.compareTo(to.firstName);
return cmp;
}
然后你得到:
while (records.get(j).compareTo(pivot) > 0) {
太棒了,非常感谢!
while (records.get(j).compareTo(pivot) > 0) {