伊莉討論區

標題: 非遞迴Merge Sort [打印本頁]

作者: nemm08    時間: 2013-4-12 02:57 PM     標題: 非遞迴Merge Sort

最近有一份作業 要用stack 寫 非遞迴Merge Sort 加上 Comparator

public static <T> void mergeSort(T[] arr, Comparator<? super T> comp){

}

不知道如何開始: 有人可以給pseudocode ? 或解釋一下我該如何開始


作者: g78312824123    時間: 2013-4-12 06:13 PM

以下不是code喔~~
  1. Function mergeSort(Type data[1..n])
  2.     If n <= 1 then return

  3.     Index i, j, k
  4.     For i from 2 to (n / 2) do
  5.         For j from 0 to (n - 1) step (2 * i) do
  6.             Index x, y
  7.             x = min(i, n - j)
  8.             y = min(i, max(0, n - i - j))

  9.             Type left[1..x], right[1..y]
  10.             For k from 1 to x do
  11.                 left[k] = data[j + k]
  12.             For k from 1 to y do
  13.                 right[k] = data[i + j + k]

  14.             Index p, q, r
  15.             p = q = 1
  16.             r = j
  17.             While p <= x and q <= y do
  18.                 If left[p] < right[q] then
  19.                     data[r] = left[p]
  20.                     p = p + 1
  21.                 Else
  22.                     data[r] = right[q]
  23.                     q = q + 1
  24.                 r = r + 1

  25.             While p <= x do
  26.                 data[r] = left[p]
  27.                 p = p + 1
  28.                 r = r + 1

  29.             While q <= y do
  30.                 data[r] = right[q]
  31.                 q = q + 1
  32.                 r = r + 1
  33. End
複製代碼

作者: nemm08    時間: 2013-4-13 12:24 AM

g78312824123 發表於 2013-4-12 06:13 PM
以下不是code喔~~

我已經學會了 但還是感恩!




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!