插入排序(Insert Sort), java版.
版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原文出处, 即下面的声明.
原文出处:http://blog.chenlb.com/2008/12/insert-sort-for-java.html
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]