如何将C++中的反向函数代码转换成Java

Posted

技术标签:

【中文标题】如何将C++中的反向函数代码转换成Java【英文标题】:How to convert the codes of reverse function in C++ into Java 【发布时间】:2015-05-04 11:30:56 【问题描述】:

我已经在 c++ 中完成了处理器模拟器分配,现在我正在尝试用 Java 转换整个代码。这里出现的问题是我们在 C++ 中使用反向函数来改组进程。我知道java中也有一个反向函数,但我不知道如何在下面的例子中使用它。

shuffle() 函数代码在 c++ 和 Java 的正下方!

这是 C++ 代码:

void processor::shuffle()

    int swapPriority;
    int swapTime;
    int swapProcessID;
    string swapProcessName;
    int end = used - 1;
    int length = used - 1;
    for (int counter = length - 1; counter>0; counter--)
        for (int index = 0; index<end; index++)
            if (priority[index]>priority[index + 1])
                //ist work
                swapPriority = priority[index + 1];
                swapTime = timeReq[index + 1];
                swapProcessID = processId[index + 1];
                swapProcessName = processName[index + 1];
                //2nd
                priority[index + 1] = priority[index];
                timeReq[index + 1] = timeReq[index];
                processId[index + 1] = processId[index];
                processName[index + 1] = processName[index];
                //3rd
                priority[index] = swapPriority;
                timeReq[index] = swapTime;
                processId[index] = swapProcessID;
                processName[index] = swapProcessName;
            


        end--;

    
    **The problem is here !!!!**
        //How to convert this below portion into Java code??
    if (priority[0]<priority[1])
        reverse(priority, priority + length + 1);
        reverse(timeReq, timeReq + length + 1);
        reverse(processId, processId + length + 1);
        reverse(processName, processName + length + 1);
    

这是Java代码:

public void shuffle() 
    int swapPriority;
    int swapTime;
    int swapProcessID;
    String swapProcessName;
    int end = used - 1;
    int length = used - 1;
    for (int counter = length - 1; counter > 0; counter--) 
        for (int index = 0; index < end; index++) 
            if (priority[index] > priority[index + 1]) 
                //1st work
                swapPriority = priority[index + 1];
                swapTime = timeReq[index + 1];
                swapProcessID = processId[index + 1];
                swapProcessName = processName[index + 1];
                //2nd
                priority[index + 1] = priority[index];
                timeReq[index + 1] = timeReq[index];
                processId[index + 1] = processId[index];
                processName[index + 1] = processName[index];
                //3rd
                priority[index] = swapPriority;
                timeReq[index] = swapTime;
                processId[index] = swapProcessID;
                processName[index] = swapProcessName;

            

        
        end--;

    
    if (priority[0] < priority[1]) 



    
    /* reverse(priority, priority + length + 1);
    reverse(timeReq, timeReq + length + 1);
    reverse(processId, processId + length + 1);
    reverse(processName, processName + length + 1);
    */


【问题讨论】:

用 Java 发布你到目前为止所做的事情。 我很难理解您的操作。我知道您正在将一些 C++ 代码移植到 Java,但目前还不清楚您停滞不前。 @AhmedAdnan:这里我们删除带有代码的 cmets 并将其放到已编辑的问题中。 搜索“java反向数组”一无所获? 没有得到我想做的事 【参考方案1】:

试试这个方法,它会颠倒X在3个索引范围内的顺序:

List<String> x = new ArrayList<>();
        x.add("1");x.add("2");x.add("3");x.add("4");x.add("5");x.add("6");x.add("7");x.add("8");
Comparator<String> ro = Collections.reverseOrder();  
Collections.sort(x.subList(0, 2),ro);
Collections.sort(x.subList(2, 5),ro);
Collections.sort(x.subList(5, 8),ro);

【讨论】:

以上是关于如何将C++中的反向函数代码转换成Java的主要内容,如果未能解决你的问题,请参考以下文章

在C++中,如何把字节数组转换成字符串

如何使C++将数字转换为ASC2码表中对应的符号输出?

如何将Pcm格式的音频文件转换成Wave格式的文件

如何将围绕 C++ 函数的 R 包装器转换为 Python/Numpy

如何将 System::^array 从 C# 函数转换为 C++ 中的等效数据类型

C++ 代码翻译成 Java