《数据结构与算法——C语言实现》学习笔记——归并排序

来源:互联网 发布:创意数据库设计 编辑:程序博客网 时间:2024/05/16 23:42
/*************************************************** Copyright(C):* Filename:merge_sort.cpp* Author: * Version:* Data:   18 sep 2013 * Description:***************************************************/#include "merge_sort.h"//--------------------------------------------// Merge()//////void Merge(Type *A, int p, int q, int r){    int i,j,k;    int n1,n2;    n1 = q-p;    n2 = r-q+1;    Type *L = new Type[ n1+1 ];    Type *R = new Type[ n2+1 ];    for ( i=0; i<n1; i++ ){        L[ i ] = A[ p+i ];    }    L[ i ] = INIFITE;        for ( j=0; j<n2; j++ ){        R[ j ] = A[ q+j ];    }    R[ j ] = INIFITE;    i = 0;    j = 0;    for ( k=p; k<=r; k++ ){        if ( L[ i ] < R[ j ] ){            A[ k ] = L[ i++ ];        }        else{            A[ k ] = R[ j++ ];        }        }    delete [] L;    delete [] R;}//------------------------------------------// MergeSort()//////void MergeSort(Type *A, int p, int r){    int q;    if ( p < r ){        q = (p+r)/2;        MergeSort(A, p, q);        MergeSort(A, q+1,r);        merge(A,p,q+1,r);    }}