package github.banana.sort;

/**
 * 排序工具
 */
public class SortUtil {

    public static void insert(int[] arr) {
        int length = arr.length;

        // 外层循环, 仅仅控制最低村换次数, 即遍历原始序列
        for (int i = 0; i < length; i++) {
            // 排序始终在当前元素之前进行, 循环完毕后确保当前元素是升序或者降序序列的
            // 必须将当前元素在彻底比较一遍, 才能最终确认元素该存放的位置
            for (int j = i; j > 0; j--) {
                // 由于升序排序的优点, 已经排序的序列中的最后一个为最大值, 故大于等于该值的数不需要再排序
                // 避免必要的遍历开销
                if (arr[j] >= arr[j - 1]) {
                    break;
                }

                // 否则需要一直比较下去
                if (arr[j - 1] >= arr[j]) {
                    int v = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = v;
                }
            }
        }
    }
}

@@ -167,10 +167,10 @@
 %E6%8E%A7%E5%88%B6%E6%9C%80%E4%BD%8E
-%E6%9D%91%E6%8D%A2
+%E5%BE%AA%E7%8E%AF
 %E6%AC%A1%E6%95%B0, 
@@ -403,12 +403,15 @@
 %E5%BA%8F%E5%88%97%E4%B8%AD%E7%9A%84
+%E7%9B%B8%E5%AF%B9
 %E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA
+%E5%80%BC
 %E4%B8%BA%E6%9C%80%E5%A4%A7%E5%80%BC
@@ -450,11 +450,38 @@
   //
+ %E8%AF%B4%E6%98%8E%E5%BD%93%E5%89%8D%E5%80%BC%E6%AF%94%E7%9B%B8%E5%AF%B9%E5%89%8D%E9%9D%A2%E7%9A%84%E5%80%BC%E9%83%BD%E8%A6%81%E5%A4%A7, %E6%97%A0%E9%9C%80%E5%86%8D%E8%BF%9B%E8%A1%8C%E6%AF%94%E8%BE%83,
  %E9%81%BF%E5%85%8D
+%E9%9D%9E
 %E5%BF%85%E8%A6%81%E7%9A%84%E9%81%8D

insert sort plus