我有一个由数字组成的数组,这些数字的顺序不是我决定的。例如:1,2,3,4,5,6,7,8,9,10
我已经用不同的方法编写了这段代码,我想添加现在获取 pos1 和 pos2 并比较它们的代码,并且只有在 pos2 小于 pos1 的情况下才切换位置。从 pos1 到 pos2 进行比较; pos2 到 pos3; pos3 到 pos4;等等
代码:
static void nameSwitch( int[] array, int pos1, int pos2 ) {
int temp = array[pos1];
array[pos1] = array[pos2];
array[pos2] = temp;
}
static void firstNameToLast() {
int [] values = {1,2,3,4,5,6,7,8,9,10};
int i;
for(i = 0; i < values.length; i+=2) {
swap(values, i, i+1);
}
System.out.println( + Arrays.toString(values));
}
static void goingThrough( int[] nums) {
//comparing pos1 and pos2, etc area of confusion
System.out.println( + Arrays.toString( nums ) );
}
经过最后一个循环后,我希望输出为 1,2,3,4,5,6,7,8,,9,10 保持不变,但如果我有数字,例如, 2,4,1,6,8,1,3。我想将 pos1 与 pos2 进行比较,如果 pos2 小于 pos1,则切换位置。
最佳答案
这并不难。首先编写一个环绕数组的循环,检查当前对象和它旁边的对象,如果第一个位置较大,则交换它们,如下所示:
for(int i = 0; i < myArray.length - 1; i++){
if(myArray[i] > myArray[i + 1]{
myArray = swapElements(myArray, i, i + 1);
}
}
然后你的交换元素可能看起来像这样:
private int[] swapElements(int[] arr, int first, int second){
int temp = arr[first];
arr[first] = arr[second];
arr[second] = temp;
return arr;
}
现在,如果您想对整个数组进行排序,有更简单的方法可以做到。如果您只是这样做,交换元素,我会尝试上面的方法。
编辑
我认为您的代码无法运行的原因是因为当您调用 swap
方法时,它不会更改数组本身的值,它只会在方法内更改它。请注意,在我的解决方案中,我如何将数组设置为等于从方法返回的内容。我假设您实际收到的输出是原始数组本身是否正确?
关于java - 如何在不同的方法中放置一个条件来比较决定是否执行任务的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26891271/