C++ 排序

2023-03-20 16:24 更新

既然牌堆中的紙牌順序已經(jīng)亂了,我們還是需要一種讓紙牌重新有序的方法。諷刺的是,有一個(gè)排序算法與洗牌算法很相似。

再一次,我們遍歷牌堆,而且在每個(gè)位置都選擇另一張紙牌并交換。唯一的區(qū)別是,這次我們不是隨機(jī)的選擇另一張牌,而是選擇剩余牌堆中最小的紙牌。

“剩余牌堆中”指的是以i或i右側(cè)的值為索引的紙牌。

for (int i=0; i<cards.length(); i++) {
  // 在位置i及其右側(cè)找到最小的紙牌
  // 將第i張紙牌與最小的紙牌交換
}

此外,偽代碼有助于輔助函數(shù)的設(shè)計(jì)。這種情況下,我們又能使用findLowestCard了,它接收紙牌向量和我們要開始查找的位置的索引值。

使用偽代碼指出需要什么輔助函數(shù)的過(guò)程稱為自上而下的設(shè)計(jì),它不同于我們?cè)?0.8節(jié)討論的下下而上的設(shè)計(jì)。

我們?cè)俅伟褜?shí)現(xiàn)留給讀者。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)