【数据结构排序算法篇】----插入排序【实战演练】

本文介绍了插入排序的基本原理、Java实现以及实战演练,包括简单和复杂练习。重点讨论了在部分有序数组上的优化策略,通过二分查找加速元素插入。最后思考了其他情况下的排序算法选择。

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

在这里插入图片描述

作为一名对技术充满热情的学习者,我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代,我远非专家,而是一位不断追求进步的旅行者。通过这篇博客,我想分享我在某个领域的学习经验,与大家共同探讨、共同成长。请大家以开放的心态阅读,相信你们也会在这段知识之旅中找到启示。


前言

继续学习下一个排序算法----插入排序,我们废话不多说,直接进入主题吧


一、什么是插入排序

插入排序是一种简单直观的排序算法,它的工作方式类似于我们整理手中扑克牌的方式。具体操作如下:

  1. 开始时我们左手为空并且桌子上的牌面朝下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右向左将它与手中已有的牌相比较。

  2. 数组中实现就是从数组的第二个元素开始把待插入的元素复制为一个副本(记作 key)。比较其与之前元素的大小,如果 key 更小,则之前元素向后移动一位。这个过程会一直重复,直到找到了 key 的正确位置,然后将 key 插入到这个位置。

  3. 算法过程逐步将每个元素加入到前面已经排序的序列中,在插入的过程中查找其位置,直到整个数组排序完成。

插入排序的算法时间复杂度为O(n^2),因为它需要比较的次数最坏情况是一个递增数列,但如果输入数组已经是部分排序的话,其性能会比较好。插入排序是稳定排序,也就是说,如果两个相等的元素之间的相对位置在排序前后不会改变。

下面是插入排序的一个简单实现示例(Java):

public class InsertionSort {
   
    public static void sort(int[] array) {
   
        for (int i = 1; i < array.length; i++) {
   
            // 选择第 i 个元素作为待插入元素
            int key = array[i];
            int j = i - 1;
            
            // 将比 key 大的元素向后移动
            while (j >= 0 && arra
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值