Để tiến hành sắp xếp trộn, đầu tiên ta coi các phần tử của dãy nhƣ các dãy con 1 phần tử. Tiến hành trộn từng cặp 2 dãy con này để đƣợc các dãy con đƣợc sắp gồm 2 phần tử. Tiếp tục tiến hành trộn từng cặp dãy con 2 phần tử đã sắp để tạo thành các dãy con đƣợc sắp gồm 4 phần tử v.v. Quá trình lặp lại cho tới khi toàn bộ dãy đƣợc sắp.
Ta xét quá trình sắp xếp trộn với dãy ở phần trƣớc.
Đầu tiên, coi mỗi phần tử của dãy nhƣ 1 dãy con đã sắp gồm 1 phần tử. Tiến hành trộn từng cặp dãy con 1 phần tử với nhau:
32 17 49 98 06 25 53 61
Sau bƣớc này ta đƣợc các dãy con đã sắp gồm 2 phần tử. Tiến hành trộn các cặp dãy con đã sắp gồm 2 phần tử để tạo thành dãy con đƣợc sắp gồm 4 phần tử.
17 32 49 98 06 25 53 61
Sau bƣớc này ta đƣợc các dãy con đã sắp gồm 4 phần tử. Tiến hành trộn 2 dãy con đã sắp gồm 4 phần tử.
17 32 49 98 06 25 53 61
Cuối cùng, ta có toàn bộ dãy đã đƣợc sắp:
06 17 25 32 49 53 61 98
Cài đặt cho thuật toán merge_sort bằng đệ qui nhƣ sau :
void merge_sort(int *a, int left, int right){ int middle;
if (right<=left) return; middle=(right+left)/2;
merge_sort(a, left, middle); merge_sort(a, middle+1, right); merge(a, left, middle ,right); }
Trong thủ tục này, đầu tiên ta tiến hành chia dãy cần sắp làm 2 nửa, sau đó thực hiện lời gọi đệ qui merge_sort cho mỗi nửa dãy. Hai lời gọi đệ qui này đảm bảo rằng mỗi nửa dãy này sẽ đƣợc sắp. Cuối cùng, thủ tục merge đƣợc gọi để trộn 2 nửa dãy đã sắp này.