插入排序
[编程语言教程]

插入排序(Insertion sort)

  1. 插入排序原理
    ? ? ? 插入排序原理:插入排序的原理类似于平时打扑克牌进行排序时的原理
  • 把所有的元素分为两组,一组为已排序的另外一组为没有排序的(如果没有已排序的,默认第一个元素为已排序的)
  • 找到未排序的组中的第一个元素,向已经排序的组中进行插入
  • 倒叙遍历已经排序的组,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把这个带插入元素进行插入,后续的元素依次向后移动一位。
    技术图片
  1. 插入排序代码
public class InsertionSort {
    private static boolean greater(Comparable v, Comparable w){
        return v.compareTo(w)>0;
    }

    private static void exch(Comparable[] a,int i,int j){
        Comparable temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }

    public static void sort(Comparable[] a){
        for (int i =1;i<a.length;i++){
            for (int j = i;j>0;j--){
                //比较索引j处的值和j-1处的值,如果索引j-1处的值比j的值大则交换位置
                // 如果不大则已经找到合适的位置,结束循环
                if (greater(a[j-1],a[j])){
                    exch(a,j-1,j);
                }else {
                    break;
                }
            }
        }
    }
}

  1. 插入排序的时间复杂度和稳定性
    时间复杂度为:O(n2)
    稳定性:插入排序时稳定算法

插入排序

原文地址:https://www.cnblogs.com/zuzuzu-code/p/13340925.html

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 插入排序