插入排序 实现 要点 代码 注释

本文深入解析插入排序算法的实现原理,通过生动的扑克牌排序比喻,详细阐述了算法步骤:从待排序序列中取出一个元素,与已排序序列进行比较并插入到正确位置。文章通过代码示例展示了算法的具体实现过程。

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

要点

  • 要插入的数被暂存,腾出一个空位,用来移动数据
  • 如果需要,把已经排序的区域的比要插入元素大的那部分后移一位,腾出一个空位 E
  • 把要插入的元素放到空位 E,排序完成

精髓

  • 已经排序的部分比要插入的大的那部分往后挪,腾出位置

实现

namespace DataStructure
{
  public class InsertionSort
  {
    /*
    形象的说法:
    从后往前排序,过程像是拿一张扑克牌放到手里最后一个位置,然后排序手里的牌

    抽象的说法:
    认为第一张是排好序的,从后面没有排序的数据中拿第一个出来插入到排好序的序列里
     */
    public int[] Sort(int[] array)
    {
      for (int i = 1; i < array.Length; i++)
      {
        //从没有排序的区域拿第一个
        int temp = array[i];
        //和已经排好序的区域从后往前比较
        for (int j = i - 1; j >= 0; j--)
        {
          //如果拿来的值比较小,交换,直到所有比该值大的数都往后移动了一个位置,要插入的数已经放入第一个空位上
          if (array[j] > temp)
          {
            array[j + 1] = array[j];
            array[j] = temp;
          }
          //已经排序的区域找不到更大的数值,此时该数已经找到自己的位置
          else
            break;
        }
      }
      return array;
    }
  }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值