ソース
package jp.mirageworld.algorithm.sort;
import java.util.ArrayList;
import java.util.List;
public class BubbleSort {
public static <T extends Comparable<T>> List<T> sort(List<T> list) {
List<T> retList = new ArrayList<T>(list);
boolean next = true;
while (next) {
next = false;
for (int i = 1; i < retList.size(); i++) {
T a = retList.get(i - 1);
T b = retList.get(i);
if (a.compareTo(b) > 0) {
retList.set(i - 1, b);
retList.set(i, a);
next = true;
}
}
}
return retList;
}
}
テストケース
package jp.mirageworld.algorithm.sort;
import static org.junit.Assert.*;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import org.junit.Test;
public class BubbleSortTest {
@Test
public void testSort() {
Set<Long> set = new HashSet<>();
Long target = Math.round(Math.random() * 50);
while (set.size() < 50) {
set.add(Math.round(Math.random() * 50 + set.size() * 50));
}
List<Long> list = new LinkedList<>(set);
target = list.get(target.intValue());
List<Long> retList = BubbleSort.sort(list);
System.out.println(list);
System.out.println(retList);
Collections.sort(list);
assertEquals(list.toString(), retList.toString());
System.out.println(list);
}
}