调整数组顺序

本文介绍了一种使用栈来实现的数组重排序算法,该算法能够将数组中的奇数元素置于偶数元素之前,并通过两次遍历和一次逆序输出完成整个操作过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




void CodeComplite::reOrderArray(vector<int> &array)

{
/*
    //冒泡法,时间换空间
    if (0 == array.size())
    {
        return;
    }
    int temp = 0;
    int i = 0,j=0;
    for (i = 0; i < array.size(); i++)
    {
        for (j = array.size()-1; j>0; j--)
        {
            if (array.at(j) % 2 == 1 && 0 == array.at(j - 1) % 2)
            {
                swap(array.at(j), array.at(j - 1));
            }
        }
    }
    */

    //方案二
    stack<int>s1;
    int i = 0;
    for (i = 0; i < array.size(); i++)
    {
        if (1 == array.at(i) % 2)
        {
            s1.push(array.at(i));
        }
    }
    for (i = 0; i < array.size(); i++)
    {
        if (0 == array.at(i) % 2)
        {
            s1.push(array.at(i));
        }
    }
    i =array.size()-1;
    while (!s1.empty())
    {
        array.at(i) = s1.top();
        s1.pop();
        i--;
    }
}
### 如何在MATLAB中调整.mat文件内数组的存储顺序或读取顺序 在MATLAB中,可以通过调整数组的维度顺序来改变其存储方式或读取顺序。MATLAB默认按列优先(Column-Major Order)存储数组[^1]。如果需要调整数组顺序,可以使用以下方法: #### 方法一:使用 `permute` 函数调整维度顺序 `permute` 函数可以重新排列多维数组的维度顺序。例如,假设一个三维数组 `A` 的维度为 `(M, N, P)`,可以通过以下代码将其维度调整为 `(P, M, N)`: ```matlab B = permute(A, [3, 1, 2]); ``` 这里 `[3, 1, 2]` 表示将原数组的第3维放在第1维位置,第1维放在第2维位置,第2维放在第3维位置[^4]。 #### 方法二:使用 `reshape` 函数改变数组形状 `reshape` 函数可以改变数组的形状而不改变其数据内容。例如,将一个二维数组 `A` 转换为行向量: ```matlab B = reshape(A, 1, []); ``` 如果需要将数组按特定顺序重新排列,可以结合 `permute` 和 `reshape` 使用。例如,将三维数组 `A` 按行优先顺序转换为一维向量: ```matlab B = reshape(permute(A, [3, 1, 2]), 1, []); ``` #### 方法三:使用 `transpose` 或 `.'` 转置操作 对于二维数组,可以使用转置操作来改变其行列顺序。例如,将矩阵 `A` 的行列互换: ```matlab B = A.'; ``` 注意,`.'` 是非共轭转置,而 `'` 是共轭转置,适用于复数矩阵。 #### 方法四:保存时调整存储顺序 当保存 `.mat` 文件时,可以通过调整数组顺序后再保存,确保读取时符合预期顺序。例如: ```matlab A = rand(3, 4, 5); % 原始三维数组 B = permute(A, [3, 1, 2]); % 调整维度顺序 save('adjustedArray.mat', 'B'); % 保存调整后的数组 ``` #### 方法五:读取时调整顺序 如果无法修改 `.mat` 文件的内容,可以在读取后调整数组顺序。例如: ```matlab data = load('originalArray.mat'); A = data.A; % 假设原始数组名为 A B = permute(A, [3, 1, 2]); % 调整维度顺序 ``` ### 示例代码 以下是一个完整的示例,展示如何调整三维数组的存储顺序并保存到新的 `.mat` 文件中: ```matlab % 创建一个三维数组 A = rand(3, 4, 5); % 调整维度顺序 B = permute(A, [3, 1, 2]); % 保存调整后的数组到新文件 save('adjustedArray.mat', 'B'); % 验证保存结果 C = load('adjustedArray.mat'); disp(size(C.B)); % 显示调整后的数组尺寸 ``` ### 注意事项 - MATLAB 默认按列优先存储数组,因此调整顺序时需要明确目标顺序[^4]。 - 如果涉及复数矩阵,需特别注意共轭转置与非共轭转置的区别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值