zoukankan      html  css  js  c++  java
  • 对于归并排序递归的理解

    在这里插入图片描述
    空间优化:没必要每次开一个临时数组 可以开一个然后导回来再导出去
    多适用于外排序。

    void merge(int a[], int l1, int r1, int l2, int r2)
    {
    	int i = l1, j = l2;
    	int temp[100], index = 0;
    	while (i <= r1 && j <= r2)
    	{
    		if (a[i] <= a[j])
    			temp[index++] = a[i++];
    		else
    			temp[index++] = a[j++];
    	}
    	while (i <= r1)
    		temp[index++] = a[i++];
    	while (j <= r2)
    		temp[index++] = a[j++];
    	for (i = 0; i < index; i++)
    	{
    		a[l1 + i] = temp[i];
    	}
    }
    void mergesort(int a[],int left,int right)
    {
    	if (left >= right)
    		return;
    	int mid = (left + right) / 2;
    	mergesort(a, left, mid );
    	mergesort(a, mid + 1, right);
    	merge(a, left, mid, mid + 1,right);
    }
    
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<string>
    using namespace std;
    const int maxn = 100;
    void merge(int a[], int l1, int r1, int l2, int r2)
    {
    	int i = l1, j = l2;
    	int temp[100], index = 0;
    	while (i <= r1 && j <= r2)
    	{
    		if (a[i] <= a[j])
    			temp[index++] = a[i++];
    		else
    			temp[index++] = a[j++];
    	}
    	while (i <= r1)
    		temp[index++] = a[i++];
    	while (j <= r2)
    		temp[index++] = a[j++];
    	for (i = 0; i < index; i++)
    	{
    		a[l1 + i] = temp[i];
    	}
    }
    void mergesort(int a[],int left,int right)
    {
    	if (left >= right)
    		return;
    	int mid = (left + right) / 2;
    	mergesort(a, left, mid );
    	mergesort(a, mid + 1, right);
    	merge(a, left, mid, mid + 1,right);
    }
    int main()
    {
    	int a[maxn],n;
    	cin >> 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] << " ";
    	}
    }
    
  • 相关阅读:
    8.20 附加赛3
    8.22 附加赛4
    Codeforces Round #505 (Div 1 + Div 2) (A~D)
    8.9 附加赛2
    8.10 正睿暑期集训营 Day7
    8.9 正睿暑期集训营 Day6
    8.8 正睿暑期集训营 Day5
    8.7 正睿暑期集训营 Day4
    8.6 正睿暑期集训营 Day3
    8.5 正睿暑期集训营 Day2
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13812061.html
Copyright © 2011-2022 走看看