これは非常に単純な質問ですが、私は自分で学習していますので、私にご負担ください!mergeSortと一緒に必要な基本ケース
ウィキペディアの擬似コードmergeSort(下記参照)では、配列/リストの長さが1以下の場合、ターミナルケースがあります。コメントでは、長さが0または1であれば、ソートされます。私はこれに同意しますが、好奇心が強いのは、コードがif (length == 1)
の場合、mergeSortが機能しないことを意味しますか?私はちょうど配列が0の長さの配列に分割される可能性があることをちょうど混乱させます。長さが1であれば既に止まっていませんか?
function merge_sort(list m)
// Base case. A list of zero or one elements is sorted, by definition.
if length of m ≤ 1 then
return m
// Recursive case. First, divide the list into equal-sized sublists
// consisting of the even and odd-indexed elements.
var left := empty list
var right := empty list
for each x with index i in m do
if i is odd then
add x to left
else
add x to right
// Recursively sort both sublists.
left := merge_sort(left)
right := merge_sort(right)
// Then merge the now-sorted sublists.
return merge(left, right)
親愛なるOPさん、最近、回答を受け入れることなく、たくさんの質問をしています。あなたを助けてくれた人々に報いて、あなたの質問に対する答えを受け入れてください。ありがとう。 – DarkDust
@DarkDustありがとう、私はそうしましたが、それらのすべてが私が探していた答えを提供しているわけではありません。時々、彼らはコメントに答えて、私はそれらのコメントをupvote(私は評判が行く限り何もしないことを知っていると思った)。 – AlanH