算法导论—插入排序及Matlab实现

本文介绍了《算法导论》中的插入排序算法,详细阐述了其工作原理,并提供了MATLAB实现代码。插入排序是一种简单直观的排序方法,对已排序程度较小的序列效率较高,最坏情况时间复杂度为Θ(n^2),且为原地排序和稳定排序算法。
摘要由CSDN通过智能技术生成

插入排序是《算法导论》中的第一个算法,
插入排序:Insertion-sort
输入:待排序数组A[1,···,n],长度为n
输出:按从小到大顺序排序好的数组

算法思想:插入排序是最简单直观的排序方法,原理就是通过构建有序序列,随后将待排序元素插入已知序列中。

matlab 代码如下

%%Insertion-sort:插入排序
A=[2 5 3 6 9 3 7 1]; %%输入待排序序列
for j=2:length(A)
    key=A(j);
    i=j-1;

    while i>0&& A(i)>key %插入排序内循环
        A(i+1)=A(i);
        i=i-1;
    end    
    A(i+1)=key;   

    disp(A); %分别输出每次排序后的结果
end

运行截图
这里写图片描述

算法效率分析:

%%Insertion-sort:插入排序   时间复杂度分析      次数
A=[2 5 3 6 9 3 7 1];                 
for j=2:length(A)                           % n:从2到length(A)是n-1次,当一个for或while循环按通常的方式退出时,执行测试的次数比循环体的次数多1次
    key=A(j);                               %n-1
    i=j-1;                                  %n-1
    while i>0&& A(i)>key                    %t1
        A(i+1)=A(i);                        %t2
        i=i-1;                              %t3
    end    
    A(i+1)=key;                             %n-1
    disp(A); 
end

t1=j=2ntj
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值