如何将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++ 函数的 R 包装器转换为 Python/Numpy