插入排序是《算法导论》中的第一个算法,
插入排序: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