MergeSort归并排序

来源:互联网 发布:下载福州网络家长学校 编辑:程序博客网 时间:2024/06/05 17:12
#include<iostream>using namespace std;void Merge(int c[], int d[], int l, int m, int r){int i = l, j = m + 1, k = l;while ((i <= m) && (j <= r))if (c[i] <= c[j])d[k++] = c[i++];elsed[k++] = c[j++];if (i > m)for (int q = j; q <= r; q++)d[k++] = c[q];elsefor (int q = i; q <= m; q++)d[k++] = c[q];}void MergeSort(int a[], int l, int r){int b[1000];if (l < r){int m = (l + r) / 2;MergeSort(a, l, m);MergeSort(a, m + 1, r);Merge(a, b, l, m, r);for (int x = l; x <= r; x++)a[x] = b[x];}}int main(){int n;cin >> n;int *a = new int[n];for (int i = 0; i < n; i++)cin >> a[i];MergeSort(a, 0, n - 1);for (int i = 0; i < n; i++)cout << a[i] << " ";delete[]a;return 0;}
递归实现归并排序。
0 0
原创粉丝点击