⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mergesort.cpp

📁 包含八种排序算法的界面演示多线程程序,以线段形式表示数据大小,排序一清二楚
💻 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 + -