Để 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.
32 17 49 98 06 25 53 61
Đầ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:
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.