使用冒泡排序对Java中的名称数组按字母顺序排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用冒泡排序对Java中的名称数组按字母顺序排序相关的知识,希望对你有一定的参考价值。

我一直在尝试解决此错误,但是我无法解决它。以下程序的目的是使用冒泡排序按字母顺序排列名称数组。例如,如果名称为[“ Bob Joe”,“ Bob Frank”和“ Bob Johnson”],则正确排序的数组将为[“ Bob Frank”,“ Bob Joe”,“ Bob Johnson”]。

我面临的主要挑战是比较name.charAt(0)之后的任意两个字符串。如果仅在1个特定的索引点比较任何2个字符串的字符,则我的代码有效。但是,如果如果两个字符串的索引0彼此相等,如果我试图使比较移到索引0以上,则我的程序将不再起作用。

下面概述了代码

public static void sortAlpha (String names[])
    
        for (int i = 0 ; i < names.length - 1 ; i++)
        
            for (int a = 0 ; a < names.length - 1 - i ; a++)
            

                int length1 = names [a].length ();
                int length2 = names [a + 1].length ();

                int min = 1; 

                if (length1 > length2)
                
                    min = length2;
                
                else
                
                    min = length1;
                

                for (int b = 0 ; b < min ; b++)
                

                    if ((int) names [a].toLowerCase ().charAt (b) > (int) names [a + 1].toLowerCase ().charAt (b))
                    
                        String tempName = names [a];

                        // sort:
                        names [a] = names [a + 1];
                        names [a + 1] = tempName;

                        break;
                    

                

            
        
    

如果我只是将最小值默认设置为1,则代码将运行并完成其预期的工作。但是,如果最小值保持动态,程序将无法运行。我试图找出为什么会这样,以及解决方法是什么。任何帮助,将不胜感激!

答案

您可以简单地使用compareTo()和一个临时变量进行比较和存储

https://onlinegdb.com/Bk-iB-hs8

我已经通过上面的链接编写了代码

另一答案

检查此。

   public static void sortAlpha(String names[]) 
      for (int i = 0; i < names.length - 1; i++) 
         for (int a = 0; a < names.length - 1 - i; a++) 
            int length1 = names[a].length();
            int length2 = names[a + 1].length();
            int min = length1 > length2 ? length2 : length1;
            for (int b = 0; b < min; b++) 
               if ((int) names[a].toLowerCase().charAt(b) > (int) names[a + 1].toLowerCase().charAt(b)) 
                  String tempName = names[a];
                  // sort:
                  names[a] = names[a + 1];
                  names[a + 1] = tempName;
                  break;
                else if ((int) names[a].toLowerCase().charAt(b) == (int) names[a + 1].toLowerCase().charAt(b)) 
                  // if the letter is the same go for the next
                  continue;
                else 
                  // if it's already in the right position - stop.
                  break;
               
            
         
      
   

以上是关于使用冒泡排序对Java中的名称数组按字母顺序排序的主要内容,如果未能解决你的问题,请参考以下文章

golang对数组进行冒泡排序

JAVA通过数组按首字母排序怎么做?

js中sort()方法冒泡排序模拟

按特定顺序对名称数组进行排序

按字母顺序对列表中的名称进行排序?

如何使用自定义模型类按部分按字母顺序对 tableView 中的数据进行排序?