我有一个问题陈述,我需要根据他们对各自爱好者的爱情价值进行排序。
如果两个恋人的爱情价值相同,则按字典顺序排列他们的名字,并选择字典上较小的爱人。如何执行此操作?
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
class test
{
public static void bubble(String[] name,int[] a,int n)
{
// int n=a.length;
String temp_l;
String temps;
int[] name_l = new int[100000];
int temp;
for(int i=0;i<n-1;i++)
{
//n-i-1 for ignoring the element which has already used in comparison
for(int j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j] =a[j+1];
a[j+1]=temp;
//Sort them according to their name
temps=name[j];
name[j]=name[j+1];
name[j+1]=temps;
}
}
temp_l = name[i];
name_l[i]=temp_l.length();
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n=scan.nextInt();
int t=scan.nextInt();
String[] name= new String[100000];
int[] length= new int[1000000];
int[] love= new int[10000000];
for (int i=0;i<n ;i++ ) {
name[i]=scan.next();
love[i]=scan.nextInt();
}
bubble(name,love,n);
int[] name_l=new int[n];
String temp;
for (int i=0;i<n;i++) {
temp = name[i];
name_l[i]=temp.length();
}
//printing total t selection
int test = n-1;
for (int i=t;i>0;i--)
{
System.out.println(name[test]);
test--;
}
}
}
示例输入:
3 2
surbhi 3
surpanakha 3
shreya 5
我的输出:
SHREYA
surpanakha
预期输出
SHREYA
surbhi
请指导我获取问题目标。 提前谢谢。
答案 0 :(得分:1)
在冒泡排序方法中,您必须添加小代码,以便在爱情分数相等的情况下进行交换。
for (int j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
// Sort them according to their name
temps = name[j];
name[j] = name[j + 1];
name[j + 1] = temps;
}else if(a[j] == a[j + 1]){
int result = name[j].compareTo(name[j + 1]);
if(result < 0){
temps = name[j];
name[j] = name[j + 1];
name[j + 1] = temps;
}
}
}