首页 > 解决方案 > 如何在 C++ 中优化数组的交换元素

问题描述

我的任务是编写谜机器。我几乎已经完成了,但唯一让我慢下来的是,在每种情况下,整个代码都必须在 3 秒内执行。有成千上万的变量,像 [1000+] 这样的数组,所以我需要优化我的代码。我想改变的第一件事是我的交换功能。我听说过类似圆形阵列的东西,但我不确定它是如何工作的。通常,重点是在每次编码之前,我需要旋转一次转子。如果有高于数千的数字,我想可能需要很多时间,有什么想法吗?首先,我有一个类,存储只使用转子,因为我可以将它们声明为任何数字,但我在每次编码之前声明它们有多少,然后我像普通字母 1 2 3 4 一样设置它们的位置,

for(int i=0;i<ile_rotorow_wiad;i++)
        {
            rotory_uzyte[i].copy(rotory[wiadomosc.jakie_rotory[i]],ile_liter, rotory_rev[wiadomosc.jakie_rotory[i]]);
            rotory_uzyte[i].Obroc(wiadomosc.pozycja[i], ile_liter);
        }

这是运行每个循环的代码,而“谜消息”不等于 0。

rotory_uzyte[0].Obroc(2, ile_liter);

功能奥布罗克:

void Rotor::Obroc(int pozycja, int ile)
{     
    for(int i=0;i<pozycja-1;i++)
    {
        for(int j=0;j<ile-1;j++)
        {
            swap(pozycje[j],pozycje[j+1]);
            swap(pozycje_rev[j],pozycje_rev[j+1]);
        }  
    }

}

正如您所看到的,对于大量数字,它是无用的,而且会花费很多时间。如果它像圆圈一样“循环”,如何优化它的任何想法我都无法命名。正如我提到的那样,圆形数组会是一件好事吗?那应该怎么看呢?

标签: c++loopsoptimization

解决方案


推荐阅读