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<Integer> arr = new ArrayList<Integer>();
// 用于排序
public List<Integer> core_sy(List<Integer> list1) {
List<Integer> list = new ArrayList<Integer>(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<Integer> 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<Integer> 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<Integer> list = k.core_sy(Arrays.asList(aa));
k.output(list);
}
}
输出结果:
第0次操作i=0 j=9
[2, 3, 44, 38, 5, 47, 15, 36, 26, 27, 46, 4, 19, 50, 48]
第1次操作i=2 j=3
[2, 3, 38, 44, 5, 47, 15, 36, 26, 27, 46, 4, 19, 50, 48]
第2次操作i=2 j=4
[2, 3, 5, 38, 44, 47, 15, 36, 26, 27, 46, 4, 19, 50, 48]
第3次操作i=2 j=11
[2, 3, 4, 5, 38, 44, 47, 15, 36, 26, 27, 46, 19, 50, 48]
第4次操作i=4 j=7
[2, 3, 4, 5, 15, 38, 44, 47, 36, 26, 27, 46, 19, 50, 48]
第5次操作i=5 j=8
[2, 3, 4, 5, 15, 36, 38, 44, 47, 26, 27, 46, 19, 50, 48]
第6次操作i=5 j=9
[2, 3, 4, 5, 15, 26, 36, 38, 44, 47, 27, 46, 19, 50, 48]
第7次操作i=5 j=12
[2, 3, 4, 5, 15, 19, 26, 36, 38, 44, 47, 27, 46, 50, 48]
第8次操作i=7 j=11
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 47, 46, 50, 48]
第9次操作i=11 j=12
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 50, 48]
第10次操作i=13 j=14
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]