2012-04-01 12 views
2

Hallo Ich habe seit Tagen an einer Lösung gearbeitet, und ich habe versucht, es selbst herauszufinden, aber ich kann es einfach nicht.Elemente in einer Liste vergleichen und austauschen. Java

Ich habe eine Arraylist und ich möchte die Elemente darin tauschen. Aber ich möchte die Liste in zwei Hälften vergleichen. Also wenn die Liste 8 Elemente enthält, würde ich das erste Element in der ersten Hälfte der Liste mit dem ersten Element in der zweiten Hälfte der Liste vergleichen wollen. So Liste [0] mit der Liste [4] und wenn 4 größer als 0 ist, möchte ich sie tauschen, dann will ich 0 erhöhen und um 1 und die Hälfte der Liste nach dem anderen, bis i = 4. Ich habe um es über die Befehlszeile auszuführen.

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); } 

} 

Das ist, was ich bisher habe, aber wenn ich es von der Kommandozeile ausführen, es gibt nur eine gewöhnliche Liste, und ich bin völlig ratlos. Ich würde lieber eine Schleife als die Collection-Methode verwenden, da es sich nicht um einen Programmierstil handelt, mit dem ich besonders vertraut bin.

Antwort

0

Blick auf midPoint - es ändert sich nie die Schleife im Inneren. Sie tauschen ständig das i-te Element mit der midPoint aus (sofern die Bedingung "if" erfüllt ist). Kein Element nach midPoint wird jemals berührt.

+0

gibt es LINq in Java? –

Verwandte Themen