Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较列表中的元素并交换它们。JAVA_Java_Arraylist_Compare_Swap - Fatal编程技术网

比较列表中的元素并交换它们。JAVA

比较列表中的元素并交换它们。JAVA,java,arraylist,compare,swap,Java,Arraylist,Compare,Swap,嗨,我已经为一个解决方案工作了好几天了,我一直在试图自己解决这个问题,但我就是做不到 我有一个ArrayList,我想交换其中的元素。但我想把清单对半比较。假设列表中有8个元素,我想比较列表前半部分的第一个元素和列表后半部分的第一个元素。 因此,将列表[0]与列表[4]一起列出,如果4大于0,我想交换它们,然后我想增加0和1,将列表的一半增加1,直到i=4。 我必须从命令行运行它 import java.util.Arrays; import java.util.ArrayList; im

嗨,我已经为一个解决方案工作了好几天了,我一直在试图自己解决这个问题,但我就是做不到

我有一个ArrayList,我想交换其中的元素。但我想把清单对半比较。假设列表中有8个元素,我想比较列表前半部分的第一个元素和列表后半部分的第一个元素。 因此,将列表[0]与列表[4]一起列出,如果4大于0,我想交换它们,然后我想增加0和1,将列表的一半增加1,直到i=4。 我必须从命令行运行它

 import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Scanner; 
import java.util.Collections;

public class TennisTournament {
     public static void main (String [] args) {
    Scanner input = new Scanner(System.in);
    ArrayList <Integer> nums = new ArrayList<Integer>();
    while (input.hasNextInt()) {
      nums.add(input.nextInt());
    }
    tournament(nums);   }
     public static void tournament(ArrayList <Integer> list) {
    int midPoint = list.size()/2; // returns the index number of half of the lists size
    for (int i = 0; i < midPoint; i++) { // while is bigger than mid point, increment by one
      if (list.get(i) < list.get(midPoint)) {
          Collections.swap(list, i, midPoint);
          System.out.print(list);
      }
    }
    System.out.println(list);   }

}
导入java.util.array;
导入java.util.ArrayList;
导入java.util.Scanner;
导入java.util.Collections;
公共级天车{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
ArrayList nums=新的ArrayList();
while(input.hasNextInt()){
add(input.nextInt());
}
锦标赛(nums);}
公共静态无效锦标赛(ArrayList列表){
int midPoint=list.size()/2;//返回列表大小一半的索引号
对于(int i=0;i

到目前为止,这就是我所拥有的,但是当我从命令行运行它时,它只返回一个普通的列表,我完全被难住了。我更愿意使用循环而不是集合方法,因为它不是我特别熟悉的编程风格。

看看
中点
-它在循环中从不改变。您不断地将第i个元素(假设“if”条件为true)与
中点进行交换。在
中点
之后没有任何元素被触摸过。

看看
中点
-它在循环中从不改变。您不断地将第i个元素(假设“if”条件为true)与
中点进行交换。在
中点
之后没有任何元素被触摸过