You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java冒泡排序无法对字符串数组按字母序排序,该如何修复代码?

Java冒泡排序代码修复说明

存在的问题

  • 语法逻辑错误:if判断后未添加花括号,仅tempmemory = name[j];受条件控制,后续两行元素交换代码无论判断结果是否成立都会执行,直接破坏数组元素顺序。
  • 排序规则错误:String类的compareTo方法返回值小于0时,代表调用方法的字符串字典序小于被比较的字符串。如果需要实现a到z的升序排序,此时不需要交换元素,应该在返回值大于0时才触发交换操作。
  • 可优化点:冒泡排序每一轮都会将当前未排序区间的最大元素移动到区间末尾,内层循环可以逐轮减少遍历次数,避免重复比较已经排好序的末尾元素。

修复后的完整代码

public class Main  {

    public static void bubblesort (String[] name) {
        String tempmemory;
        // 外层循环控制排序轮数
        for (int i = 0; i < name.length; i++) {
            // 内层循环每次只遍历未排序的部分
            for (int j = 0; j < (name.length - 1 - i); j++) {
                // 前一个元素字典序更大时才交换,实现升序排序
                if (name[j].compareTo(name[j + 1]) > 0) {
                    tempmemory = name[j];
                    name[j] = name[j + 1];
                    name[j + 1] = tempmemory;
                }
            }
        }
    }

    public static void main (String[] args) {
        String[] name  = {"ciku", "eman","aina"} ;
        int i=0;
        System.out.println("Before sort : ");
        while (i < name.length) {
            System.out.print(name[i] + "  ");
            i++;
        }

        bubblesort(name);

        i=0;
        System.out.println("\nAfter sort : ");
        while (i < name.length) {
            System.out.print(name[i] + "  ");
            i++;
        }
    }
}

运行效果

修复后代码输出为:

Before sort : 
ciku  eman  aina  
After sort : 
aina  ciku  eman  

符合字母升序排序的预期。

内容的提问来源于stack exchange,提问作者naddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:06:03