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

📄 helpdlg.cpp

📁 多关键字排序算法,按照多个关键字来排序的算法,关于算法和数据结构的原代码
💻 CPP
字号:
// HelpDlg.cpp : implementation file
//

#include "stdafx.h"
#include "gaokao.h"
#include "HelpDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// HelpDlg dialog


HelpDlg::HelpDlg(CWnd* pParent /*=NULL*/)
	: CDialog(HelpDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(HelpDlg)
	m_Text = _T("");
	//}}AFX_DATA_INIT
}


void HelpDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(HelpDlg)
	DDX_Text(pDX, IDC_STATICtext, m_Text);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(HelpDlg, CDialog)
	//{{AFX_MSG_MAP(HelpDlg)
	ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
	ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
	ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
	ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// HelpDlg message handlers

void HelpDlg::OnButton8() 
{
    m_Text.Format("#define MAX_NUM_OF_KEY 8  //关键字项数的最大基数,\n      \t\t\t\t\t //本设计中只用到5\n#define RADIX 10\n#define MAX_SPACE 10000\n\ntypedef struct{\nchar name[4];\nKyeType keys[MAX_NUM_OF_KEY+1];   //关键字\nint next; }SLCell; //静态链表的节点类型\n\ntypedef struct{\nSLCell r[MAX_SPACE+1];\nint keynum;  //记录的当前关键字个数\nint recnum;   //静态链表的当前长度\n}SLList;    //静态链表类型\n");
	UpdateData(FALSE); 
}

void HelpDlg::OnButton5() 
{
	// TODO: Add your control notification handler code here
	m_Text.Format("int ord(int score,int i){\nint j;\nif(i==1)j=score%100%10;\nelse if(i==2) j=score%100/10;\nelse j=score/100取百位;\nreturn j;}\nvoid Distribute(SLCell r[],int i,ArrType &f,ArrType &e,int key){\n	int j,p;\nfor(j=0;j<RADIX;j++){f[j]=0;e[j]=0;}\nfor(p=r[0].next;p;p=r[p].next){\nj=ord(r[p].keys[key],i);\nif(!f[j])f[j]=p;else r[e[j]].next=p;\ne[j]=p;}\n}\nvoid Collect(SLCell r[], int i, ArrType f, ArrType e){\n	int j=0,t=0;\n	for(j=RADIX-1; j>=0 ; j-- )\n	{\n		if(f[j]){ r[t].next=f[j];t=e[j];}\n	}\n	r[t].next=0;\n}\nvoid RadixSort(SLList &L,short key){\n	ArrType f,e;\n	int i;\n	for( i=1; i<=3; i++ )\n	{	Distribute(L.r,i,f,e,key);Collect(L.r,i,f,e);  }\n}");
	UpdateData(FALSE);
}

void HelpDlg::OnButton6() 
{
	// TODO: Add your control notification handler code here
	m_Text.Format("int SelectMaxKey(SLList L,int key,int i)     //用于简单排序\n{\n	int k,max=i;\n	for( k=i; k<=L.recnum; k++ )\n	{\n		if(L.r[k].keys[key] > L.r[max].keys[key])\n		{\n			max=k;\n		}\n	}\n	return max;\n}\nvoid SteadySort(SLList &L, int key)          //稳定排序  选择关键字key排序\n{\n	int i,j;\n	SLCell T;\n	for( i=1; i<=L.recnum; ++i )                //简单选择排序\n             {		j=SelectMaxKey(L,key,i);\n		if(i!=j)\n		{\n			T=L.r[i]; L.r[i]=L.r[j]; L.r[j]=T;\n		}\n	}\n}");
	UpdateData(FALSE);
}

void HelpDlg::OnButton7() 
{
	m_Text.Format("因为选择排序不能用于多多关键字排序,\n所以本排序程序只是用选择排序先排选择的科目,\n再用基数排序对综合科进行排序!!!效率之比应该是屏幕中显示比值的平方。\n另外,由于时间关系,菜单中保存和读入两个功能并没有完成。");
	UpdateData(FALSE);
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -