以撲克牌為例蠢古,將一種花色的牌選出來(lái)(3~K奴曙,A,2)洗牌之后便瑟,要將小牌到大牌從左到右依次放好缆毁。
選擇排序
1.找到所有牌中最小的牌,將它與第一個(gè)牌交換位置到涂;
2.剩下的牌中找到最小的脊框,與第二個(gè)牌交換位置;
......
直到最后一張牌践啄。
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)開(kāi)始浇雹,看第二張牌,如果第二張牌比第一張牌小屿讽,把第二張牌與第一張牌交換位置昭灵;
2.第三張牌,與前兩張牌相比伐谈,如果比第二張牌小烂完,與第二張牌交換位置;繼續(xù)與第一張牌比诵棵,如果比第一張牌也小抠蚣,繼續(xù)與第一張牌交換位置,如果比第一張牌大履澳,不交換位置嘶窄;
...
N.第N+1張牌,與前N張牌相比距贷,每一次與前一個(gè)位置的牌相比柄冲,如果比前一個(gè)位置小,就交換忠蝗,直到不比前一個(gè)位置的牌邢趾帷;
...
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