簡體   English   中英

用C ++算法排序

[英]Sorting with c++ algorithm

我想按重量對筷子進行排序,並且在程序結尾處需要匹配的一雙筷子。 我應該使用排序算法嗎? 我想按重量(例如110、90、110、90)對它進行排序,因此在這種情況下我得到了2對。 一個體重為90,另一個體重為110,但是我該如何追蹤呢? 我知道我必須使用計數器,但是我不知道如何使用。

#include<iostream>
#include<algorithm>
#include<vector> 

using namespace std; 

bool myChopsticks (int i, int j) 
{
return (i<j);
} 

int main() 
{ 
int myintergers []= {90, 110, 90, 110}; 

vecotr<int> myvector(myintergers, myintergers+4); 

vector<int>::iterator it; 
sort (myvector.begin(), myvector.end()+2);
 cout << "myvector contains:"; 

for (it=myvector.begin(); it!=myvector.end(); ++it) 

cout << " " << *it; cout << endl;
 return 0;
}

是的,我想是這樣。

通過對筷子進行分類,您可以將它們整理好。 然后,查找具有相等權重的對將變得更加容易(只需對有序集合進行一次迭代)。

存儲一串筷子(可能在vector <>中)似乎足夠了,然后遍歷它們以查找匹配項並顯示出來。

或者,std:mapping為您實現了一個二叉樹,該二叉樹應使搜索匹配項非常有效。

如果您知道只有一對配對,請使用std::map<weight, chopstick>並在執行find(newWeight)調用后在給定點插入。 如果find()在任何時候都返回完全匹配項,那么您就完成了。

如果存在多個可能的匹配對,則使用std::multimap<weight, chopstick> ,然后迭代生成的容器,以count()每個不同值的匹配數。

如果最后不需要真正的筷子,而只是一雙匹配的筷子,那么可以使用std::set<weight>std::multiset<weight>代替。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM