码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序

时间:2020-07-19 23:25:54      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:break   http   return   没有   loading   static   比较   vat   com   

插入排序(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)
    稳定性:插入排序时稳定算法

插入排序

标签:break   http   return   没有   loading   static   比较   vat   com   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!