插入排序(Insert Sort), java版
插入排序(Insert Sort), java版.插入排序(Insert Sort), java版.发表于:2008年12月28日?| 分类:算法?| 标
插入排序(Insert Sort), java版.
插入排序(Insert Sort), java版.发表于:2008年12月28日?| 分类:算法?| 标签:?sort?|?
java 的库很丰富,为了复习下数据结构与算法,博客一下,方便自己以后查看,现在先为 插入排序写个代码。
插入排序原理:前面的都是有序的(x1,x2...xk),在添加一个数据e时,从最后一个到最一个比较(从xk到x1),直到找到合适的位置(比如,从小到大排序——直到第一个比e小)。
时间复杂度:平均O(n2),最坏情况O(n2)。
下面来看下代码:
- package?com.chenlb.sort;??
- ??
- import?java.util.Arrays;??
- ??
- public?class?InsertSort?{??
- ??
- ????public?static?int[]?sort(int[]?datas)?{??
- ????????for(int?i=1;?i<datas.length;?i++)?{??
- ????????????for(int?j=i-1;?j>=0;?j--)?{??
- ????????????????if(datas[j]?>?datas[j+1])?{??
- ????????????????????SortUtil.swap(datas,?j,?j+1);???//交换??
- ????????????????}??
- ????????????}??
- ????????}??
- ????????return?datas;??
- ????}??
- ??
- ????public?static?void?main(String[]?args)?{??
- ????????int[]?datas?=?{5,1,3,4,9,2,7,6,5};??
- ????????sort(datas);??
- ????????System.out.println(Arrays.toString(datas));??
- ??
- ????????datas?=?SortUtil.randomDates(10);??
- ????????sort(datas);??
- ????????System.out.println(Arrays.toString(datas));??
- ????}??
- ??
- }??
运行结果:
- [1,?2,?3,?4,?5,?5,?6,?7,?9]??
- [49,?97,?200,?262,?356,?368,?618,?624,?682,?925] ?
?