插入排序
1 package com.berry.algorithm.sort; 2 3 /** 4 * Created by berry-h on 17-1-16. 5 */ 6 public class InsertSort implements Sort{ 7 8 /** 9 * 10 * @param array 11 * 12 * 插入排序就像是一个人在玩扑克牌,拿了一手凌乱的拍牌,要把它排好序,插入排序就是一个把牌排好序的过程 13 * 从第一张牌开始排序,如果紧挨着的下一张牌小于前一张牌,把它抽出来,将前n张牌大于抽出的这张牌的面值 14 * 的牌依次向后移动一个位置,最后将抽出的放在原来前面第n张的牌的位置,这就是插入排序。 15 */ 16 @Override 17 public void sort(int[] array){ 18 19 if(array == null){ 20 return; 21 } 22 23 int temp; 24 int j; 25 for(int i = 0;i < array.length - 1;i++){ 26 27 //判断i+1索引对应的值是否小于i索引对应的值 28 if(array[i] > array[i + 1]){ 29 //将i+1索引对应的值抽出来 30 temp = array[i + 1]; 31 //将前面n个大于i+1索引对应的值的元素依次向后移动一个位置 32 for(j = i; j >= 0 && array[j] > temp;j--){ 33 array[j + 1] = array[j]; 34 } 35 //将i+1索引对应的值插入原来前面第n张的牌的位置 36 array[j + 1] = temp; 37 } 38 39 } 40 } 41 42 }