首页 > 代码库 > 一个排序算法的解析
一个排序算法的解析
int[] source = { 8, 9, 10, 7, 6, 10, 20, 5, 21 };
public static void sort(int[] list) { for (int i = 1; i < list.length; i++) { int baseNumber = list[i]; System.out.print("i="+i+",baseNumber="+baseNumber+".Result:"); int j=i; for (; j - 1 >= 0; j--) { if (list[j - 1] > baseNumber) { list[j] = list[j - 1]; } else { break; } } if (i > j) { list[j] = baseNumber; } travelArray(list); } }
Output:
i=1,baseNumber=9.Result:8,9,10,7,6,10,20,5,21,i=2,baseNumber=10.Result:8,9,10,7,6,10,20,5,21,i=3,baseNumber=7.Result:7,8,9,10,6,10,20,5,21,i=4,baseNumber=6.Result:6,7,8,9,10,10,20,5,21,i=5,baseNumber=10.Result:6,7,8,9,10,10,20,5,21,i=6,baseNumber=20.Result:6,7,8,9,10,10,20,5,21,i=7,baseNumber=5.Result:5,6,7,8,9,10,10,20,21,i=8,baseNumber=21.Result:5,6,7,8,9,10,10,20,21,5,6,7,8,9,10,10,20,21,
分析:
原理:在以前排序的基础上再排序
代码分析
排序前两个元素8,9:取下标1的值为baseNumber,为9,下标1前面有元素8,9>8,不需要换位,break。前两个元素8,9现在有序的
排序前三个元素8,9,10:取下标2的值为baseNumber,为10,下标2前面有元素9,10>9,不需要换位,break。前三个元素8,9,10现在是有序的
排序前四个元素8,9,10,7:取下标3的值为baseNumber,为7,
下标3前面有元素10,7<10,需要换位,得到8,9,10,10
下标2前面有元素9,7<9,需要换位,得到8,9,9,10
下标1前面有元素8,7<8,需要换位,得到8,8,9,10
下标为0时,循环结束。
将baseNumber,为7,赋给下标为0的位置,得到7,8,9,10
一个排序算法的解析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。