習題 紙牌排序

2021-08-21 09:33:39 字數 527 閱讀 1618

在學習《演算法》(第四版)時,碰到這麼個紙牌系列的問題。

question:說說你會如何將一副撲克牌按花色排序(花色順序為黑桃、紅桃、梅花、方片),限制條件是所有牌都是背面朝上排成一列,而你一次只能翻看兩張牌或交換兩張牌(保持背面朝上)

這個問題實際上就是一次只能比較某兩個元素而實現排序,回想排序演算法,發現使用插入排序演算法的思想和氣泡排序的思想是很可行的。

說說你會如何將一副撲克牌排序,限制條件是只能檢視最上面的兩張牌,交換最上面的兩張牌,或是將最上面的一張牌放到這一摞牌的最下面。

比較最上面的兩張牌,如果第一張牌比第二張牌大,就交換這兩張牌,否則保持這兩張牌的順序不變,然後再將第一張牌放入牌底,隨著是同樣的操作——比較最上面的兩張牌。經過length-1次這樣的操作後,最上面的牌肯定是最大的一張牌了,此時不需要做任何的比較,直接把此牌放入牌底。

第一步中已經找出了最大的一張牌並且放入了牌底,那麼接下來還是同樣的做法,就是在最上面的length-1張牌中,找出最大的一張牌,再放入排序,經過反覆的這樣操作後,可以實現有序,最大的牌在最上面,而最小的牌在最下面。

習題6 9 UVA 127 紙牌遊戲

一道學校oj做的題目,當時卡了兩三天。簡單說下題意 52疊撲克,從左到右發現乙個牌與他的前面3張或者1張 花色或者點數相同時,就把這張牌放到那上面,參與比較的只能是每一疊的第一章!思路 我建立了vector 套了乙個stack stack裡面放了struct,先輸入。1.在輸入方面,最好寫個輸入函式...

Algs4 2 1 13紙牌排序 按花色排序

2.1.13紙牌排序。說說你會如何將一副撲克牌按花色排序 花色順序是黑桃 紅桃 梅花和方片 限制條件是所有牌都是背面朝上排成一列,而你一次只能翻看兩張牌或者交換兩張牌 保持背面朝上 演算法具體描述如下 1 翻看第一張 第二張牌 2 如果第二張牌的花色小於第一張牌的花色,那麼交換這兩張牌 3 翻看第一...

快速排序習題

1.修改快速排序中的pation演算法,使得返回q,t,其中p q t r.下標小於q的都小於主元,大於t的都大於主元,在q t之間的等於主元 pation a,p,r q p 1 t q for int i 0 i2.對區間的模糊排序 我們知道一系列數的大致區間,怎樣對這些區間進行排序使得每個區間...