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

C++ 使用冒泡排序按二维数组首列对整行排序问题求助

免责声明:以下所有地址均为虚构,仅用于学习用途。

问题根因

你当前的冒泡排序逻辑仅交换了每行的首列元素,其余列没有同步移动,所以会出现首列排序正确、但其余列和首列不匹配的问题。

修复方案

只需要在判断两行需要交换位置时,遍历该行所有6个元素完成整行交换即可,修改后的排序段代码如下:

for (int i = lastpos - 1; i > 0; i--) {
    for (int j = 0; j < i; j++) {
        if (adresser[j][0] > adresser[j + 1][0]) { 
            // 交换整行的全部6列元素
            for (int k = 0; k < 6; k++) {
                temp = adresser[j][k];
                adresser[j][k] = adresser[j + 1][k];
                adresser[j + 1][k] = temp;
            }
        }
    }
}

优化方案(可选)

如果希望代码更易维护、排序效率更高,也可以用结构体存储单条地址信息,再调用STL的sort函数实现排序,示例代码如下:

#include <algorithm>

// 定义单条地址的存储结构
struct Address {
    std::string lastName;
    std::string firstName;
    std::string street;
    std::string streetNum;
    std::string zipCode;
    std::string city;
};

Address adresser[50];

// 按姓氏首字母升序排序
std::sort(adresser, adresser + lastpos, [](const Address& a, const Address& b) {
    return a.lastName < b.lastName;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:36:07