#include<iostream>
using namespace std;
void Merge(int L[], int s, int m, int t) {
int LIFT_SIZE = m - s + 1;
int RIGHT_SIZE = t - m;
int* left = new int[LIFT_SIZE];
int* right = new int[RIGHT_SIZE];
int i, j;
for (i = s, j = 0; i <= m; i++) {
left[j++] = L[i];
}
for (i = m + 1, j = 0; i <= t; i++) {
right[j++] = L[i];
}
int cnt = s, k = 0;
j =0;
while (k < LIFT_SIZE && j < RIGHT_SIZE) {
if (left[k] < right[j])
L[cnt++] = left[k++];
else if(left[k]>right[j])
L[cnt++] = right[j++];
else {
L[cnt++] = left[k++];
L[cnt++] = right[j++];
}
}
while (k < LIFT_SIZE) {
L[cnt++] = left[k++];
}
while (j < RIGHT_SIZE) {
L[cnt++] = right[j++];
}
}
void MergeSort(int L[],int s,int t) {
if (s < t) {
int m = s + (t-s) / 2;
MergeSort(L, s, m);
MergeSort(L, m + 1, t);
Merge(L, s, m, t);
}
}
int main() {
int L[] = { 1,5,3,7,6,9 };
MergeSort(L, 0, 5);
for (int i = 0; i <= 5; i++)
cout << L[i] << " ";
}
数据结构-排序-归并排序(c++实现)
猜你喜欢
转载自blog.csdn.net/qq_43710881/article/details/105894871
今日推荐
周排行