歸并排序是一種基于分治思想的排序算法,其主要思想是將待排序數組分成兩個子數組,然后遞歸地對兩個子數組進行排序,將兩個已經排序好的子數組合并成一個有序的數組。以下是歸并排序的C語言實現方法。
1.定義一個歸并排序函數,該函數接收三個參數待排序數組、子數組的起始下標以及子數組的結束下標。
2.如果子數組的起始下標等于結束下標,則該子數組已經有序,直接返回。
3.計算子數組的中間下標,然后遞歸地對左右兩個子數組進行排序。
4.將左右兩個已經排序好的子數組合并成一個有序的數組。
ergetttd) {d) {;
}tidd) / 2;ergeid);ergeidd);t left = start;tid + 1;tpd - start + 1];t i = 0;idd) {
if (arr[left]<= arr[right]) {p[i++] = arr[left++];
}
else {p[i++] = arr[right++];
}
}id) {p[i++] = arr[left++];
}d) {p[i++] = arr[right++];
}t j = 0; j< i; j++) {p[j];
}
tain() {t arr[] = { 9, 2, 7, 4, 5, 6, 3, 8, 1 };t = sizeof(arr) / sizeof(arr[0]);erge - 1);t; i++) {tf("%d ", arr[i]);
} 0;
1 2 3 4 5 6 7 8 9
logn),適用于各種數據規模的排序。在實際應用中,歸并排序還可以用于外部排序,即將待排序的數據存儲在外部存儲器中進行排序。