Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java快速排序多个条件_Java_Quicksort - Fatal编程技术网

java快速排序多个条件

java快速排序多个条件,java,quicksort,Java,Quicksort,我想使用快速排序对我的对象进行排序。 名为Person的对象包含两个字段(firstname和lastname)。 班级人员{ 私人名字; 私人姓氏; //+吸气剂/塞特 } 它应该按姓氏排序,如果姓氏相同,则按名字排序。 所以如果我有人[“米勒”、“汤姆”、“史密斯”、“杰瑞”、“米勒”、“亚历克斯”] 输出必须为“Miller”、“Alex”;“米勒”、“汤姆”、“史密斯”、“杰瑞”。 按姓氏排序是可行的,但我不知道如何实现第二部分 下面是代码片段: public void快速排序(列出记录

我想使用快速排序对我的对象进行排序。 名为Person的对象包含两个字段(firstname和lastname)。
班级人员{
私人名字;
私人姓氏;
//+吸气剂/塞特
}

它应该按姓氏排序,如果姓氏相同,则按名字排序。 所以如果我有人[“米勒”、“汤姆”、“史密斯”、“杰瑞”、“米勒”、“亚历克斯”] 输出必须为“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) {