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

如何使用Bubble Sort按消息长度对二维string数组进行排序

使用冒泡排序对2D字符串数组按消息长度排序的实现

核心逻辑

我们需要按二维数组第0列存储的消息字符串长度排序,冒泡排序过程中需要把每一行的两个元素(消息、优先级)作为整体交换,排序默认按长度升序排列,需要降序可自行修改比较条件。
具体实现逻辑如下:

  • 首先获取二维数组的总行数
  • 外层循环控制排序轮次,总轮次为总行数-1
  • 内层循环遍历当前未排序区间的相邻行,比较两行第0列的字符串长度
  • 若前一行消息长度大于后一行,交换两行的两个元素
  • 可选优化:新增交换标记,某轮没有发生任何交换说明数组已经有序,直接终止排序减少冗余运算

完整排序代码

// 冒泡排序实现:按第0列消息长度升序排列
int rowCount = array.GetLength(0);
// 交换标记,用于优化排序效率
bool swapped;
for (int i = 0; i < rowCount - 1; i++)
{
    swapped = false;
    // 每轮排序后末尾i个元素已经有序,不需要再比较
    for (int j = 0; j < rowCount - 1 - i; j++)
    {
        // 比较相邻两行第0列的字符串长度
        if (array[j, 0].Length > array[j + 1, 0].Length)
        {
            // 交换第0列的消息内容
            string tempMsg = array[j, 0];
            array[j, 0] = array[j + 1, 0];
            array[j + 1, 0] = tempMsg;
            
            // 同步交换第1列的优先级内容
            string tempPriority = array[j, 1];
            array[j, 1] = array[j + 1, 1];
            array[j + 1, 1] = tempPriority;
            
            swapped = true;
        }
    }
    // 本轮没有交换,说明已经有序,直接退出
    if (!swapped)
    {
        break;
    }
}

说明

如果需要按长度降序排序,只需要把判断条件array[j, 0].Length > array[j + 1, 0].Length修改为array[j, 0].Length < array[j + 1, 0].Length即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:39:00