作者jkhunter (我不配)
看板PHP
標題[請益] 結合排序 Merge Sort
時間Wed Sep 10 10:42:43 2008
想請問大家
如果我要六個陣列
使用Mergesort來排列的話
要怎麼寫判斷式
我已經會兩個了
但是想不出來怎麼比較六個
$sorted = array();
$sorted2 = array();
$len1 = count($t['價格']);
$len2 = count($g['價格']);
$i = $j = 0;
while ( $i < $len1 && $j < $len2 )
{
// if they are equal is doesn't matter which goes first
if ( $t['價格'][$i] < $g['價格'][$j] )
{ array_push($sorted,$t['標題'][$i++]);
array_push($sorted2,$t['價格'][$i++]);
}else{
array_push($sorted,$g['標題'][$j++]);
array_push($sorted2,$g['價格'][$j++]);
}
}
// which ever still has elements they are all greater
while ( $i < $len1 )
{ array_push($sorted,$t['標題'][$i++]);
array_push($sorted2,$t['價格'][$i++]); }
while ( $j < $len2 )
{ array_push($sorted,$g['標題'][$j++]);
array_push($sorted2,$g['價格'][$j++]); }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.171.135.123
推 jimwayne123 :六個陣列各自用merge sort排序好,然後把這六個陣列 09/10 11:33
→ jimwayne123 :當作是拆開後正要開始合併的資料,併成一個陣列 09/10 11:34
→ jkhunter :我原本的陣列已經排序好了 是要結合一起排序 09/10 11:52
推 LPH66 :那就是六個人的排頭出來比大小 最小的出列 09/10 12:11
→ LPH66 :然後那一排就換下一個出來 依此類推 09/10 12:11
→ LPH66 :中間如果有一排沒了就跳過它 例如放個最大值之類的 09/10 12:12
→ LPH66 :一直到最後剩一排就剩下的全趕過去 搞定 09/10 12:12
→ LPH66 :至於六個排頭找最小的方法就不用多說了 XD 09/10 12:13
推 jimwayne123 :六個陣列已經排序好,那就用merge sort做merge的那段 09/10 12:54
→ jimwayne123 :程式碼,把這六個陣列合併成一個陣列就好啦 09/10 12:55