zoukankan      html  css  js  c++  java
  • 归并排序

    #include <iostream>
    using namespace std;
    void merge(int a[], int p, int q, int r)
    {
    	int n1 = q - p + 1;
    	int n2 = r - q;
    	int* L = new int[n1 + 2];
    	int* R = new int[n2 + 2];
    	L[n1+1]=0x7fffffff;
    	R[n2+1]=0x7fffffff;
    	//复制数组
    	for(int i = 1; i <= n1; i++)
    		L[i] = a[p + i - 1];
    	//复制数组
    	for(int i = 1; i <= n2; i++)
    		R[i] = a[q + i];
    	int i = 1;
    	int j = 1;
    	//合并
    	for(int k = p; k <= r; k++)
    	{
    		if(L[i] <= R[j])
    		{
    			a[k] = L[i];
    			i++;
    		}
    		else
    		{
    			a[k] = R[j];
    			j++;
    		}
    	}
    }
    void mergesort(int a[], int p, int r)
    {
    	if(p < r)
    	{
    		int q = (p + r) / 2;
    		mergesort(a, p, q);
    		mergesort(a, q + 1, r);
    		merge(a, p, q, r);
    	}
    }
    
    int main()
    {
    
    	/*
    	 * 归并排序
    	 *将一个问题的模n分解成n/2个子问题
    	 *将子问题n分解成n/2个子问题
    	 *最小子问题的模等于1
    	 *初始化:
    	 *保持:
    	 *终止:
    	 */
    	int a[] = { 0, 8, 6, 7, 1, 5, 4, 2, 3 };
    	mergesort(a, 1, 8);
    	for(int i = 1; i <= 8; i++)
    		cout << a[i] << " ";
    	cout << endl;
    	return 0;
    }
    

      

  • 相关阅读:
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    我的友情链接
    以太坊:通信协议对象 shh
    以太坊:Truffle 概述
    以太坊:快速入门 Truffle
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/6892081.html
Copyright © 2011-2022 走看看