排序算法 | 直接插入排序及其优化

本文详细介绍了直接插入排序的算法描述、复杂度分析及实现,包括基础版和使用二分查找优化的版本。插入排序在最好、最坏和平均情况下时间复杂度均为O(n^2),但其稳定性使得在某些场景下仍有应用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接插入排序(Straight Insertion Sort)

插入排序是一种简单直观的排序算法。插入排序的基本思想是:将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。


目录

直接插入排序(Straight Insertion Sort)

1、算法描述

2、算法分析

2.1、复杂度分析

2.1.1、时间复杂度

2.1.2、空间复杂度

2.2、算法稳定性

3、算法实现

3.1、基础版

3.2、优化,二分查找+直接插入排序(二分排序)

4、算法示例

5、注意


1、算法描述

基本思想:每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止。

  1. 从第一个元素开始 i=1,该元素可以认为已经被排序;
  2. 取出下一个元素 i ,在已经排序的元素序列 j=i-1 中从后向前扫描 j-- 
  3. 如果前一个元素(已排序的)大于新元素 a[j] > cur ,将该元素移到下一位置 a[j + 1] = a[j] 
  4. 重复步骤3 j--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值