插入排序

插入排序,某一位置的数与前面已排好序的数从后向前比较,直到找到正确的位置。时间复杂度O(n方)

 1 private static int[] insertSort(int[] arr) {
 2         int j=0;   
 3         if (arr==null||arr.length<2) {
 4             return arr;
 5         }
 6         // 将arr分成有序区和无序区,初始有序区有一个元素
 7         // 0-(i-1) 为有序区;i-(length-1)为无序区 (i从1开始)
 8         for (int i = 1; i < arr.length; i++) {
 9             int tmp=arr[i];        //将位置i的值储存在tmp中
10             for (j = i; j>0&&arr[j-1]>tmp; j--) 
11                 arr[j]=arr[j-1];    //    如果已排好序的值比tmp大,则该元素移到下一位置
12             arr[j]=tmp;  //将tmp放在正确的位置上
13         }
14         return arr;
15     }

 

posted @ 2016-08-13 21:52  鹏徐翔飞11  阅读(121)  评论(0编辑  收藏  举报