首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【算法 之插入排序 原理及案例】

【算法 之插入排序 原理及案例】

作者头像
flos chen
发布2026-01-23 18:30:42
发布2026-01-23 18:30:42
1250
举报

插入排序原理:

插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

具体来说,插入排序的步骤是:

  1. 从第一个元素开始,该元素可以认为已经被排序;
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描;
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置;
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  5. 将新元素插入到该位置后;
  6. 重复步骤2~5,直到所有元素都被排序。

代码示例:

代码语言:javascript
复制
#include <iostream>  
#include <vector>  
  
void insertionSort(std::vector<int>& arr) {  
    int n = arr.size();  
    for (int i = 1; i < n; ++i) {  
        int key = arr[i];  
        int j = i - 1;  
  
        // Move elements of arr[0..i-1], that are  
        // greater than key, to one position ahead  
        // of their current position  
        while (j >= 0 && arr[j] > key) {  
            arr[j + 1] = arr[j];  
            j = j - 1;  
        }  
        arr[j + 1] = key;  
    }  
}  
  
int main() {  
    std::vector<int> arr = {12, 11, 13, 5, 6};  
    insertionSort(arr);  
  
    std::cout << "Sorted array: \n";  
    for (int i = 0; i < arr.size(); i++)  
        std::cout << arr[i] << " ";  
  
    return 0;  
}

这段代码定义了一个insertionSort函数,该函数接受一个整数向量的引用作为参数,并对其进行原地排序。主函数main中创建了一个未排序的整数向量,并调用insertionSort函数进行排序,然后输出排序后的结果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 插入排序原理:
  • 具体来说,插入排序的步骤是:
  • 代码示例:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档