gpt4 book ai didi

java - 移动和重新组织数组

转载 作者:行者123 更新时间:2023-11-30 03:57:33 25 4
gpt4 key购买 nike

我有一个数组,假设:LRU_frame[] = {4,1,0,3}

我有一个 random() 函数,可以输出一个随机数。如果随机数n包含在数组LRU_frame中,那么n应该在LRU_frame[0]上,其他所有内容都必须相应地向下移动。

例如,如果 random() 给我一个 0,则新的 LRU_frame[] = {0,4,1,3}

另一个例子,如果 random() 给我一个 3,新的 LRU_frame[] = {3,4,1,0}

如何对其中包含任意数量元素的任意数组大小执行此操作?

我知道如何通过在 LRU_frame[0] 上添加新元素来移动数组,但不知道如何按照我的需要重新组织数组。

这是我到目前为止的代码,让我们假设 char a 是随机数(转换为 char)以使用和重新组织数组。

public static void LRU_shiftPageRef(char a) {
for (int i = (LRU_frame.length - 2); i >= 0; i--) {

LRU_frame[i + 1] = LRU_frame[i];
}
LRU_frame[0] = a;

}

最佳答案

你的想法很好,你只需要找到数组中a元素的位置并从它开始循环,而不需要LRU_frame.length

int index = -1;

// find the positon of 'a' in the array
for (int i = 0; i <= (LRU_frame.length - 1); i++) {
if (LRU_frame[i] == a) {
index = i;
break;
}
}

// if it is present, do roughly the same thing as before
if (index > -1) {
for (int i = (index - 1); i >= 0; i--) {
LRU_frame[i + 1] = LRU_frame[i];
}
LRU_frame[0] = a;
}

但是,如果您可以使用ArrayLists,事情就会变得更加容易。

// declaration
ArrayList<Integer> LRU_frame = new ArrayList<Integer>();

...

if (LRU_frame.contains(a)) {
LRU_frame.remove((Integer) a);
LRU_frame.add(0, a);
}

关于java - 移动和重新组织数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22795436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com