看板 C_and_CPP 關於我們 聯絡資訊
假如現在有兩筆男生和女生的身高體重資料 要從男生裡面挑三個出來,從女生裡面挑兩個出來 挑選標準是身高最矮者,如果身高一樣矮則以體重來比較,若體重又一樣則選編號較小者 舉例: 編號01~06是男生,07~12是女生 編號 01 02 03 04 05 06 07 08 09 10 11 12 身高 177 168 167 180 168 168 162 155 172 158 165 158 體重 55 60 65 63 62 58 47 48 49 45 45 45 所以結果會挑選出男生:02 03 06 女生:08 10 (編號10比編號12小,所以選編號10) 當遇到這樣的問題時,我是想先個別以vector來儲存資料 例如:vectorM[0]表示01號男生,vectorM[5]表示06號男生 vectorW[0]表示07號女生,vectorW[5]表示12號女生 vectorMh[0]是01號男生的身高,vectorMh[5]是06號男生的身高 vectorMw[0]是01號男生的體重,vectorMw[5]是06號男生的體重 vectorWh[0]是07號女生的身高,vectorWh[5]是12號女生的身高 vectorWw[0]是07號女生的體重,vectorWw[5]是12號女生的體重 以男生而言 先比較vectorMh,原本vectorMh的資料依序是 177 168 167 180 168 168 我是想以sort ( vectorMh.begin(), vectorMh.end() ) 來排出順序大小 這樣的話,vectorMh中的資料排序會變成 167 168 168 168 177 180 此時,167一定會被選中,但是三個168必須比較 體重 ,再從中選出兩個 問題來了,我要怎麼知道身高168的人是哪三位呢? 我只知道必須用for loop 去把所有男生的身高資料掃一次,才能抓出誰是身高168 但是當資料數量非常多的時候,這樣去掃會變得非常浪費時間 請問遇到這樣的問題時,有什麼特別的方法可以節省程式的執行時間呢? 感恩~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.3.39
yuscvscv:用個struct或class把資料包起來 然後自定義sort 08/31 17:25
youknowme09:struct,class +1 08/31 17:45
Hyozero:自定義sort是什麼意思呢? 08/31 18:27
tropical72:要排序的意思.. 08/31 18:46
tsaiminghan:用stable sort,依序排編號,體重,身高個一次 08/31 19:53
tsaiminghan:不然就是自定義sort的函式 08/31 19:53
loveme00835:想像現在有「人」要去排隊, 每個人擁有「id」、「身高 08/31 19:54
loveme00835:」、「體重」這些屬性,「人」要視為一個整體不可分割 08/31 19:55
loveme00835:你把他分開儲存,就已經增加了排序的難度,sort有兩種 08/31 19:56
loveme00835:版本,第一個版本就是你用的那個,是用運算子 < 來比 08/31 19:57
loveme00835:較內建型別變數的大小,還有另外一個版本,是提供你自 08/31 19:57
loveme00835:訂型態的比較規則,用來決定一個「人」怎樣才算是小於 08/31 19:58
loveme00835:另外一個「人」 08/31 19:58
hilorrk:總結:1.predicate 2.stable sort 08/31 20:00
loveme00835:不一定要stable sort啦~> < 也可以自訂operator < 08/31 20:02
tsaiminghan:覆寫class的operator<嗎?那算第3種方法 08/31 20:07
tsaiminghan:不過跟自定義sort函式感覺差不多耶。 08/31 20:08
loveme00835:其實如果第二個版本是用functor,再加上自訂<, inline 08/31 20:13
loveme00835:比較容易被接受 08/31 20:14
loveme00835:不過不太建議把< 寫成member啦 08/31 20:14
tsaiminghan:請問哪個東西要寫成inline? 08/31 20:23
loveme00835:functor 提供的 () member function / operator < 08/31 20:45
Hyozero:請問有不使用struct或class的方法嗎? 目前還不太會用 QQ 08/31 20:50
king5014:struct很容易的 查一下就會了 08/31 21:06
loveme00835:其實用 nth_element 會更快... 08/31 21:15