如何在冒泡排序中按字典顺序对字符串进行排序?

时间:2016-10-08 07:49:29

标签: java algorithm sorting

我有一个问题陈述,我需要根据他们对各自爱好者的爱情价值进行排序。

如果两个恋人的爱情价值相同,则按字典顺序排列他们的名字,并选择字典上较小的爱人。如何执行此操作?

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

请指导我获取问题目标。 提前谢谢。

1 个答案:

答案 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;
                }
            }
        }