插入排序就像是一个人在玩扑克牌,拿了一手凌乱的拍牌,要把它排好序,插入排序就是一个把牌排好序的过程,从第一张牌开始排序,如果紧挨着的下一张牌小于前一张牌,把它抽出来,将前n张牌大于抽出的这张牌的面值的牌依次向后移动一个位置,最后将抽出的放在原来前面第n张的牌的位置,这就是插入排序。
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 }