1. 选择排序的原理
每次从未排序的元素中找到最大(或最小)的元素放在已排序的元素的末尾。
以数组[4,22,7,1,3]为例。
步骤1:找到最小的元素为1,4与1交换。得到[1,2,7,4.3]
步骤2:找到最小的元素为2,不用交换。得到[1,2,7,4.3]
步骤3:找到最小的元素为3,7与3交换。得到[1,2,3,4.7]
步骤4:找到最小的元素为4,不用交换。得到[1,2,3,4.7]
2. MATLAB实现
sortarray=[4,2,7,1,3];
[m,n]=size(sortarray);
for i=1:n-1
minindex=i;
for j=minindex+1:n
if sortarray(:,j)<sortarray(:,minindex)
minindex=j;
end
end
temp=sortarray(:,i);
sortarray(:,i)=sortarray(:,minindex);
sortarray(:,minindex)=temp;
selectsort=sortarray
end
3. 运行及结果
与我们在第一步中的分析一致。
3. 选择排序的效率
- 比较:1+2+…+(N-1)=N(N-1)/2
- 交换:N-1
- 总效率:二次时间:O(N²)