排序算法之插入排序

排序算法

插入排序

概述
  • 插入排序是简单直观。对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。实现上通常采用in-place排序,需要反复把已排序元素逐步向后挪位,为新元素插入提供空间。
  • 时间复杂度:O(N2),最好为O(n),最坏是O(n2)
  • 空间复杂度:O(1)
  • 对随机数据的排序,效率比冒泡和选择都高。对极端数据可能存在交换次数过的情况
  • 算法步骤
    • 从待排序列中拿出一个元素;
    • 从后往前扫描已排序列;
    • 若该元素小于被扫描元素,将该元素直接插入被扫描元素之前;若不小于被扫描元素,则插入被扫描元素之后
    • 重复以上步骤,知道待排序列所有元素被逐一拿出。
Java实现
package com.example.demo.service;

import java.util.Arrays;

/**
 * @since 2021-0-0
 */
public class InsertSort {

    public static void main(String[] args) {
        int[] sequence = {6,5,3,4,3,2,1};
        for(int index = 1;index<sequence.length;index++){
            int key = sequence[index];
            for(int i = index-1;i>=0;i--){
                if(key<=sequence[i]){
                    sequence[i+1] = sequence[i];
                    sequence[i] = key;
                }
            }
        }
        System.out.println(Arrays.toString(sequence));
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值