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

咨询:冒泡排序Code数组后如何同步关联Item与Price数组

哈哈,这个问题我之前写代码的时候也踩过坑!核心问题就是你把关联的商品数据拆成了三个独立数组,排序只动了Code数组,自然就和另外两个数组的对应元素脱节了。给你两个靠谱的解决思路,优先推荐第一个:

方案一:用结构体/类封装关联数据(推荐)

这是最规范也最易维护的做法——把商品的名称、编码、价格打包成一个整体数据结构,比如结构体(C/C++)、类(Java/Python)或者元组(Python),这样排序的时候操作的是整个商品对象,三个属性自然会始终绑定在一起。

举个C语言的例子:

// 定义结构体,把三个关联字段打包
typedef struct {
    char item[50];
    int code;
    float price;
} Product;

// 用一个Product数组存储所有商品数据
Product products[100];

冒泡排序的时候,直接比较每个Product对象的code字段,交换整个对象即可:

int n = 3; // 假设共有3个商品
for (int i = 0; i < n-1; i++) {
    for (int j = 0; j < n-i-1; j++) {
        // 按code升序排序
        if (products[j].code > products[j+1].code) {
            // 交换整个商品对象,三个字段自动同步
            Product temp = products[j];
            products[j] = products[j+1];
            products[j+1] = temp;
        }
    }
}

如果是Python的话会更简洁,直接用元组或自定义类存储商品,然后指定排序键:

# 用列表存储元组,每个元组对应一个商品的三个属性
products = [("wine", 1298, 8.99), ("bread", 987, 3.5), ("milk", 1567, 4.2)]
# 按编码(元组的第二个元素)升序排序
products.sort(key=lambda x: x[1])

排序后遍历输出,每个商品的三个属性依然是绑定的,完全不会错位!

方案二:如果必须用三个独立数组,排序时同步交换元素

要是你因为某些限制必须保留三个独立数组,那就在冒泡排序交换Code元素的同时,同步交换Item和Price数组对应索引的元素,确保三个数组的位置始终对齐。

还是以C语言为例:

// 假设已经有三个数组:item[], code[], price[],长度为n
int n = 3;
for (int i = 0; i < n-1; i++) {
    for (int j = 0; j < n-i-1; j++) {
        if (code[j] > code[j+1]) {
            // 交换Code数组元素
            int temp_code = code[j];
            code[j] = code[j+1];
            code[j+1] = temp_code;
            
            // 同步交换Item数组元素
            char temp_item[50];
            strcpy(temp_item, item[j]);
            strcpy(item[j], item[j+1]);
            strcpy(item[j+1], temp_item);
            
            // 同步交换Price数组元素
            float temp_price = price[j];
            price[j] = price[j+1];
            price[j+1] = temp_price;
        }
    }
}

这种方法虽然能解决问题,但缺点很明显:代码冗余,后续如果新增商品属性(比如库存),还要修改排序逻辑里的交换代码,维护成本很高,所以还是优先用方案一。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:12:12