📄 mergesort.cpp
字号:
// MergeSort.cpp: implementation of the CMergeSort class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "sort.h"
#include "MergeSort.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMergeSort::CMergeSort()
{
name=_TEXT("归并");
}
CMergeSort::~CMergeSort()
{
}
void CMergeSort::Sort()
{
t=new int[n];
if (MergeSort(0,n-1)) State2=2;
delete [] t;
}
BOOL CMergeSort::MergeSort(int left, int right)
{
if (left==right) return TRUE;
int mid=(left+right)/2;
if (!MergeSort(left,mid)) return FALSE;
if (!MergeSort(mid+1,right)) return FALSE;
memcpy(&t[left],&p[left],(right-left+1)*4);
int p0=left,p1=mid+1;
for (int i=left;i<=right;i++)
{
if (State2==-1)
{
State2=1;
return FALSE;
}
if (p0>=mid+1)
p[i]=t[p1++];
else if (p1>right)
p[i]=t[p0++];
else if (t[p0]<t[p1])
p[i]=t[p0++];
else p[i]=t[p1++];
if (CanSleep) Sleep();
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -