java - 如何在不同的方法中放置一个条件来比较决定是否执行任务的元素?

标签 java arrays loops if-statement methods

我有一个由数字组成的数组,这些数字的顺序不是我决定的。例如: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/

相关文章:

arrays - 将数组保存到 Parse.com

C++ 游戏 - 同时循环和按键

java - GridView 中列之间的图像间距

java - Spring MVC - 服务应该返回可选还是抛出异常?

java - 在Java应用程序中调度任务时如何使用NTP服务器?

java - 解析可用对象的奇怪 xml 响应

php - 如何将此字符串反序列化为键=>值对的PHP数组?

ios - 无法将数组传递到 performSegueWithIdentifier

loops - 替换具有初始值的变量

javascript - 从数组中的对象中查找键的值 - Javascript