歸并排序是一種常見的排序算法,它采用了分治策略的思想,將待排序的序列分成若干個(gè)子序列,每個(gè)子序列都是有序的,然后再將這些有序的子序列合并成一個(gè)有序的序列。
1. 將待排序序列分成若干個(gè)子序列,每個(gè)子序列都是有序的。
2. 將相鄰的兩個(gè)子序列進(jìn)行合并,得到一個(gè)更長的有序子序列。
3. 不斷重復(fù)步驟2,直到整個(gè)序列都變成一個(gè)有序序列。
1. 將待排序序列平均分成兩部分。
2. 對左半部分進(jìn)行歸并排序。
3. 對右半部分進(jìn)行歸并排序。
4. 將左右兩個(gè)有序序列合并成一個(gè)有序序列。
C語言實(shí)現(xiàn)歸并排序的代碼如下
ergettt right) {
if (left >= right) {;
}tid = (left + right) / 2;ergeid);ergeid + 1, right);ergeid, right);
ergetttidt right) {tid + 1, k = 0;tp[right - left + 1];id && j<= right) {
if (arr[i]<= arr[j]) {p[k++] = arr[i++];
} else {p[k++] = arr[j++];
}
}id) {p[k++] = arr[i++];
}
while (j<= right) {p[k++] = arr[j++];
}t p = 0; p< k; p++) {p[p];
}
logn),是一種穩(wěn)定的排序算法。它的主要缺點(diǎn)是需要額外的空間來存儲臨時(shí)數(shù)組,但是對于大規(guī)模數(shù)據(jù)的排序,它的效率仍然很高。