#include<iostream>
using namespace std;
const int N=10;
class Mergesort{
private:
int arr[N];
void merge(int arr[],int L,int M,int R);
void mergesort(int arr[], int L, int R);
public:
void input();
void output();
};
void Mergesort::merge(int arr[],int L,int M,int R) {
int left_size = M - L ;
int right_size = R - M +1;
int* left = new int[left_size];
int* right = new int[right_size];
for (int i = L; i < M; i++) {
left[i-L] = arr[i];
}
for (int i = M; i <= R; i++) {
right[i - M] = arr[i];
}
int i = 0, j = 0, k = L;
while (i < left_size && j < right_size) {
if (left[i] < right[j]) {
arr[k] = left[i];
i++;
k++;
}else {
arr[k] = right[j];
j++;
k++;
}
}
while (i < left_size) {
arr[k] = left[i];
i++;
k++;
}
while (j < right_size) {
arr[k] = right[j];
j++;
k++;
}
}
void Mergesort::mergesort(int arr[],int L,int R) {
if (L == R) {
return ;
} else {
int M = (L + R) / 2 ;
mergesort(arr, L, M);
mergesort(arr, M + 1, R);
merge(arr, L, M + 1, R);
}
}
void Mergesort::input() {
cout << "please input your 10 datas.";
for (int i = 0; i < N; i++) {
cin >> arr[i];
}
}
void Mergesort::output() {
mergesort(arr, 0, N-1);
for (int i = 0; i < N; i++) {
cout << arr[i] << endl; }
}
int main() {
Mergesort obj1;
obj1.input();
obj1.output();
return 0;
}
归并排序 mergesort.cpp
最新推荐文章于 2020-09-28 19:25:35 发布