[請益] 結合排序 Merge Sort

看板PHP作者 (我不配)時間17年前 (2008/09/10 10:42), 編輯推噓3(307)
留言10則, 3人參與, 最新討論串1/2 (看更多)
想請問大家 如果我要六個陣列 使用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

09/10 11:33, , 1F
六個陣列各自用merge sort排序好,然後把這六個陣列
09/10 11:33, 1F

09/10 11:34, , 2F
當作是拆開後正要開始合併的資料,併成一個陣列
09/10 11:34, 2F

09/10 11:52, , 3F
我原本的陣列已經排序好了 是要結合一起排序
09/10 11:52, 3F

09/10 12:11, , 4F
那就是六個人的排頭出來比大小 最小的出列
09/10 12:11, 4F

09/10 12:11, , 5F
然後那一排就換下一個出來 依此類推
09/10 12:11, 5F

09/10 12:12, , 6F
中間如果有一排沒了就跳過它 例如放個最大值之類的
09/10 12:12, 6F

09/10 12:12, , 7F
一直到最後剩一排就剩下的全趕過去 搞定
09/10 12:12, 7F

09/10 12:13, , 8F
至於六個排頭找最小的方法就不用多說了 XD
09/10 12:13, 8F

09/10 12:54, , 9F
六個陣列已經排序好,那就用merge sort做merge的那段
09/10 12:54, 9F

09/10 12:55, , 10F
程式碼,把這六個陣列合併成一個陣列就好啦
09/10 12:55, 10F
文章代碼(AID): #18npGaaj (PHP)
討論串 (同標題文章)
文章代碼(AID): #18npGaaj (PHP)