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] << " ";
    	}
    }
    
  • 相关阅读:
    Java技术路线--2循环
    Java技术路线--1基本类型与包装类
    Linux内存管理之UMA模型和NUMA模型
    最长XX子串/数组/子序列
    epoll LT 模式和 ET 模式详解
    OS篇:OS中进程的阻塞与挂起的区别
    约瑟夫环问题
    最大公约数和最小公倍数
    C++之寻找素数(素数筛)
    Linux OOM机制分析
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13812061.html
Copyright © 2011-2022 走看看