import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author shany
* @date 2018年9月10日 下午4:47:45
* @version V1.0
*/
/**
* @author Administrator
*
*/
public class Kspx {
// 用于记录运行次数
static int num = 0;
// 用于防止循环未结束问题
static List arr = new ArrayList();
// 用于排序
public List core_sy(List list1) {
List list = new ArrayList(list1);
// 循环遍历
for (int i = 0; i < list.size(); i++) {
for (int j = i + 1; j < list.size(); j++) {
// 比这个数小,且在这个数后面的数
if (arr.get(j) < arr.get(i)) {
System.out.println("第" + num++ + "次操作" + "i=" + i + " j="
+ j);
// System.out.println("i="+list.get(i)+" j="+list.get(j));
// 先存储要移动的数据
int temp = list.get(j);
// 先移除再添加
list.remove(j);
list.add(i, temp);
// if(is_sure(list))test
// return arr;test
// 同步list里面的数据
arr = list;
// 查看本次结果
output(list);
// 递归
core_sy(list);
}
}
//如果运行到末尾了,则排序结束
if (i == list.size() - 1) {
return arr;
}
}
return null;
}
// 比较---不过用不到(删了这个function也没事)
public boolean is_sure(List list) {
if (list.size() != arr.size())
return false;
for (int i = 0; i < list.size(); i++) {
if (list.get(i) != arr.get(i))
return false;
}
return true;
}
// 遍历输出
public void output(List list) {
System.out.println(Arrays.toString(list.toArray()));
}
//主函数
public static void main(String[] args) {
Kspx k = new Kspx();
Integer aa[] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
arr = Arrays.asList(aa);
List list = k.core_sy(Arrays.asList(aa));
k.output(list);
}
}