以扑克牌为例,将一种花色的牌选出来(3~K,A,2)洗牌之后,要将小牌到大牌从左到右依次放好。
选择排序
1.找到所有牌中最小的牌,将它与第一个牌交换位置;
2.剩下的牌中找到最小的,与第二个牌交换位置;
......
直到最后一张牌。
for(int i=0;i<N;i++) begin
int min=i;
for(int j=i+1;j<N;j++) begin
if(a[j]<a[min])
min=j;
end
exch(a,i,min);
end
插入排序
1.从第二张牌(索引为1)开始,看第二张牌,如果第二张牌比第一张牌小,把第二张牌与第一张牌交换位置;
2.第三张牌,与前两张牌相比,如果比第二张牌小,与第二张牌交换位置;继续与第一张牌比,如果比第一张牌也小,继续与第一张牌交换位置,如果比第一张牌大,不交换位置;
...
N.第N+1张牌,与前N张牌相比,每一次与前一个位置的牌相比,如果比前一个位置小,就交换,直到不比前一个位置的牌小;
...
for(int i=1;i<N;i++) begin
for(int j=i;j>0;j--) begin
if(a[j]<a[j-1]) exch(a, j, j-1);
else break;
end
end