 เขียน pseudocode สำหรับอัลกอริทึม Merge Sort
MergeSort(A, startIndex, endIndex): // ถ้ามีเพียงองค์ประกอบเดียวในอาร์เรย์ ให้ return if startIndex == endIndex: return middleIndex = (startIndex + endIndex) / 2 // เรียงลำดับครึ่งซ้ายของอาร์เรย์ MergeSort(A , startIndex, MiddleIndex) // จัดเรียงครึ่งทางขวาของอาร์เรย์ MergeSort(A, middleIndex + 1, endIndex) // รวมอาร์เรย์ที่จัดเรียงทั้งสองเข้าด้วยกัน Merge(A, startIndex, endIndex) Merge(A, startIndex, endIndex): middleIndex = (startIndex + endIndex) / 2 leftIndex = startIndex rightIndex = MiddleIndex + 1 // อาร์เรย์ชั่วคราวเพื่อเก็บอาร์เรย์ที่เรียงลำดับ tempArray[] // วนซ้ำทั้งสองครึ่งของอาร์เรย์สำหรับ i ในช่วง (startIndex, endIndex+1): // ถ้าทำซ้ำครึ่งซ้ายเสร็จแล้ว ให้เพิ่มจากครึ่งขวาหาก leftIndex > MiddleIndex: tempArray[i] = A[rightIndex] rightIndex++ // หากทำซ้ำครึ่งขวาเสร็จแล้ว ให้เพิ่มจากครึ่งซ้ายเป็นอย่างอื่นถ้า rightIndex > endIndex: tempArray[i] = A[leftIndex] leftIndex++ // เปรียบเทียบองค์ประกอบปัจจุบันและเพิ่มองค์ประกอบที่เล็กกว่าหาก A[leftIndex] < A[rightIndex]: tempArray[i] = A[leftIndex] leftIndex++ อื่น: tempArray[i] = A[rightIndex] rightIndex++ / / คัดลอก tempArray กลับไปที่ A สำหรับ i ในช่วง (startIndex, endIndex+1): A[i] = tempArray[i]