和上一篇快速排序一样,直接复制粘贴运行main方法即可。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class guibingpaixu {
public static List<Integer> he(List<Integer> list1, List<Integer> list2){
for (int i = 0; i < list2.size(); i++){
int success = 0;
for (int j = 0; j < list1.size(); j++){
if(list2.get(i) < list1.get(j)){
list1.add(j, list2.get(i));
success = 1;
break;
}
}
if(success == 0){
list1.add(list2.get(i));
}
}
return list1;
}
public static void gao(List<Integer> list){
List<List<Integer>> listList = new ArrayList<>();
for (int i = 0; i < list.size(); i++){
List<Integer> lList = new ArrayList<>();
lList.add(list.get(i));
listList.add(lList);
}
while(listList.size() > 1){
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
List<List<Integer>> gdListList = new ArrayList<>();
int t = 0;
for (int i = 0; i < listList.size(); i++){
if(t == 0){
list1 = listList.get(i);
t++;
if(i == listList.size() - 1){
gdListList.add(listList.get(i));
}
}else{
list2 = listList.get(i);
t--;
List<Integer> wcList = he(list1, list2);
List<Integer> zwcList = new ArrayList<>();
for (int k = 0; k < wcList.size(); k++){
zwcList.add(wcList.get(k));
}
gdListList.add(zwcList);
list1.clear();
list2.clear();
}
}
listList.clear();
for (int i = 0; i < gdListList.size(); i++){
listList.add(gdListList.get(i));
}
gdListList.clear();
}
System.out.println(listList.get(0));
}
public static void main(String[] args){
List<Integer> list = new ArrayList<>(Arrays.asList(5,3,8,4,7,8,9,2,1,4,5,6,9,3,2,5,10));
gao(list);
}
}