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

📄 gaokaodlg.cpp

📁 多关键字排序算法,按照多个关键字来排序的算法,关于算法和数据结构的原代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			m_ListCtrl.SetItemText(k,j,str);
		}
		L.r[i].keys[5]=L.r[i].keys[1]+L.r[i].keys[2]+L.r[i].keys[3]+L.r[i].keys[4];
		str.Format("%d",L.r[i].keys[5]);
		m_ListCtrl.SetItemText(k,j,str);
		str.Format("%d",k+1);
		m_ListCtrl.SetItemText(k,6,str);

	}

	end=clock();
	long needtime=end-start;
	m_lsd.Format("%ld",needtime);
	}

	UpdateData(FALSE);
}


void CGaokaoDlg::OnSelect() 
{
	start=clock();
	int i,j;
	for( i=0 ;  i<L.recnum ;  i++ ) L.r[i].next=i+1;
	L.r[L.recnum].next=0;

	i=chosecourse();
	if(i==0) MessageBox("请先选择关键字!!!");
	else
	{
		SteadySort(L,i);
		RadixSort(L,5);
		
		m_ListCtrl.DeleteAllItems();         //先清除所有的表现
		for(int k=6;k>=0;k--) m_ListCtrl.DeleteColumn(k);  //再清除所有的列
		
		LV_COLUMN lvColumn;                                           //设置列表基本信息  列
		lvColumn.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
		lvColumn.fmt=LVCFMT_LEFT;
		lvColumn.cx=60;  //设置列的宽度
		lvColumn.iSubItem=0;
		lvColumn.pszText="姓名";
		m_ListCtrl.InsertColumn(0,&lvColumn);
		lvColumn.iSubItem=1;
		lvColumn.pszText="语文";
		m_ListCtrl.InsertColumn(1,&lvColumn);
		lvColumn.pszText="数学";
		m_ListCtrl.InsertColumn(2,&lvColumn);
		lvColumn.pszText="英语";
		m_ListCtrl.InsertColumn(3,&lvColumn);
		lvColumn.pszText="X科";
		m_ListCtrl.InsertColumn(4,&lvColumn);
		lvColumn.pszText="综合";
		m_ListCtrl.InsertColumn(5,&lvColumn);
		lvColumn.pszText="排名";
		m_ListCtrl.InsertColumn(6,&lvColumn);
		
		CString str;
/*		for(i=1; i<=L.recnum; i++ )
		{
			str.Format("%s",L.r[i].name);
			m_ListCtrl.InsertItem(i-1,str);

			for(j=1;j<=4;j++)
			{
				str.Format("%d",L.r[i].keys[j]);
				m_ListCtrl.SetItemText(i-1,j,str);
			}
			L.r[i].keys[5]=L.r[i].keys[1]+L.r[i].keys[2]+L.r[i].keys[3]+L.r[i].keys[4];
			str.Format("%d",L.r[i].keys[5]);
			m_ListCtrl.SetItemText(i-1,j,str);
			str.Format("%d",i);
			m_ListCtrl.SetItemText(i-1,6,str);

		}*/
	for(k=0,i=L.r[0].next; i; i=L.r[i].next,k++ )
	{
		str.Format("%s",L.r[i].name);
		m_ListCtrl.InsertItem(k,str);
		for(j=1;j<=4;j++)
		{			        
			str.Format("%d",L.r[i].keys[j]);
			m_ListCtrl.SetItemText(k,j,str);
		}
		L.r[i].keys[5]=L.r[i].keys[1]+L.r[i].keys[2]+L.r[i].keys[3]+L.r[i].keys[4];
		str.Format("%d",L.r[i].keys[5]);
		m_ListCtrl.SetItemText(k,j,str);
		str.Format("%d",k+1);
		m_ListCtrl.SetItemText(k,6,str);

	}

		end=clock();
		long needtime;
		needtime=end-start;
		m_select.Format("%ld",needtime);
		
		L=copy;                           //回复L,可以用其他方法来排序,对多种进行比较
	}
	UpdateData(FALSE);
}

void CGaokaoDlg::OnButton1() 
{
	int i,j;
	m_ListCtrl.DeleteAllItems();         //先清除所有的表现
	for(int k=6;k>=0;k--) m_ListCtrl.DeleteColumn(k);  //再清除所有的列

	LV_COLUMN lvColumn;                                           //设置列表基本信息  列
	lvColumn.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
	lvColumn.fmt=LVCFMT_LEFT;
	lvColumn.cx=60;  //设置列的宽度
	lvColumn.iSubItem=0;
	lvColumn.pszText="姓名";
	m_ListCtrl.InsertColumn(0,&lvColumn);
	lvColumn.iSubItem=1;
	lvColumn.pszText="语文";
	m_ListCtrl.InsertColumn(1,&lvColumn);
	lvColumn.pszText="数学";
	m_ListCtrl.InsertColumn(2,&lvColumn);
	lvColumn.pszText="英语";
	m_ListCtrl.InsertColumn(3,&lvColumn);
	lvColumn.pszText="X科";
	m_ListCtrl.InsertColumn(4,&lvColumn);
	lvColumn.pszText="综合";
	m_ListCtrl.InsertColumn(5,&lvColumn);
	CString str;
//	RadixSort(L,5);
	L=copy;
	for(i=1; i<=L.recnum; i++ )
	{
		str.Format("%s",L.r[i].name);
		m_ListCtrl.InsertItem(i-1,str);
		for(j=1;j<=4;j++)
		{			        
			str.Format("%d",L.r[i].keys[j]);
			m_ListCtrl.SetItemText(i-1,j,str);
		}
		L.r[i].keys[5]=L.r[i].keys[1]+L.r[i].keys[2]+L.r[i].keys[3]+L.r[i].keys[4];
		str.Format("%d",L.r[i].keys[5]);
		m_ListCtrl.SetItemText(i-1,j,str);

	}	
}

void CGaokaoDlg::OnRadio1() 
{
	// TODO: Add your control notification handler code here
	a=1;
}

void CGaokaoDlg::OnRadio2() 
{
	// TODO: Add your control notification handler code here
	b=1;
}

void CGaokaoDlg::OnRadio3() 
{
	// TODO: Add your control notification handler code here
	c=1;
}

void CGaokaoDlg::OnRadio4() 
{
	// TODO: Add your control notification handler code here
	d=1;
}

void CAboutDlg::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
}

void CGaokaoDlg::OnMenuitem32777() 
{
	CGaokaoDlg::OnOK();
}

void CGaokaoDlg::OnMenuitem32780() 
{
HelpDlg dlg;
dlg.DoModal();	
}

void CGaokaoDlg::OnButton2() 
{
	// TODO: Add your control notification handler code here
	m_ListCtrl.DeleteAllItems();         //先清除所有的表现
	for(int k=6;k>=0;k--) m_ListCtrl.DeleteColumn(k);  //再清除所有的列
	
}

void CGaokaoDlg::OnButton3() 
{
	m_ListCtrl.DeleteAllItems();         //先清除所有的表现
	for(int k=6;k>=0;k--) m_ListCtrl.DeleteColumn(k);  //再清除所有的列

	LV_COLUMN lvColumn;
	lvColumn.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
	lvColumn.fmt=LVCFMT_LEFT;
	lvColumn.cx=60;  //设置列的宽度
	lvColumn.iSubItem=0;
	lvColumn.pszText="姓名";
	m_ListCtrl.InsertColumn(0,&lvColumn);
	lvColumn.iSubItem=1;
	lvColumn.pszText="语文";
	m_ListCtrl.InsertColumn(1,&lvColumn);
	lvColumn.pszText="数学";
	m_ListCtrl.InsertColumn(2,&lvColumn);
	lvColumn.pszText="英语";
	m_ListCtrl.InsertColumn(3,&lvColumn);
	lvColumn.pszText="X科";
	m_ListCtrl.InsertColumn(4,&lvColumn);
	lvColumn.pszText="综合";
	m_ListCtrl.InsertColumn(5,&lvColumn);

	CString str;
	int i,j,score,n;
	srand(time(NULL));
//	n=10+rand()%3;
	n=1000;
	InitSLList(L,n);
	for(i=1;i<=n;i++)
	{
		for(j=0;j<4;j++)
		{
			L.r[i].name[j]=65+rand()%26;
		}
		str.Format("%s",L.r[i].name);
		m_ListCtrl.InsertItem(i-1,str);
		for(j=1;j<=4;j++)
		{
			score=rand()%101;
			if(score<60)                       //if在这里是为了提高整体成绩,不让太多成绩低于60分
			{
				score=rand()%101;
			}
			L.r[i].keys[j]=score;            
			str.Format("%d",L.r[i].keys[j]);
			m_ListCtrl.SetItemText(i-1,j,str);
		}
		L.r[i].keys[5]=L.r[i].keys[1]+L.r[i].keys[2]+L.r[i].keys[3]+L.r[i].keys[4];
		str.Format("%d",L.r[i].keys[5]);
		m_ListCtrl.SetItemText(i-1,j,str);
	}

	copy=L;
	
}

static int huakuai;

void CGaokaoDlg::OnButton4() 
{
	m_ListCtrl.DeleteAllItems();         //先清除所有的表现
	for(int k=6;k>=0;k--) m_ListCtrl.DeleteColumn(k);  //再清除所有的列

	LV_COLUMN lvColumn;
	lvColumn.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
	lvColumn.fmt=LVCFMT_LEFT;
	lvColumn.cx=60;  //设置列的宽度
	lvColumn.iSubItem=0;
	lvColumn.pszText="姓名";
	m_ListCtrl.InsertColumn(0,&lvColumn);
	lvColumn.iSubItem=1;
	lvColumn.pszText="语文";
	m_ListCtrl.InsertColumn(1,&lvColumn);
	lvColumn.pszText="数学";
	m_ListCtrl.InsertColumn(2,&lvColumn);
	lvColumn.pszText="英语";
	m_ListCtrl.InsertColumn(3,&lvColumn);
	lvColumn.pszText="X科";
	m_ListCtrl.InsertColumn(4,&lvColumn);
	lvColumn.pszText="综合";
	m_ListCtrl.InsertColumn(5,&lvColumn);

	CString str;
	int i,j,score,n;
	n=huakuai;
	InitSLList(L,n);
	for(i=1;i<=n;i++)
	{
		for(j=0;j<4;j++)
		{
			L.r[i].name[j]=65+rand()%26;
		}
		str.Format("%s",L.r[i].name);
		m_ListCtrl.InsertItem(i-1,str);
		for(j=1;j<=4;j++)
		{
			score=rand()%101;
			if(score<60)                       //if在这里是为了提高整体成绩,不让太多成绩低于60分
			{
				score=rand()%101;
			}
			L.r[i].keys[j]=score;            
			str.Format("%d",L.r[i].keys[j]);
			m_ListCtrl.SetItemText(i-1,j,str);
		}
		L.r[i].keys[5]=L.r[i].keys[1]+L.r[i].keys[2]+L.r[i].keys[3]+L.r[i].keys[4];
		str.Format("%d",L.r[i].keys[5]);
		m_ListCtrl.SetItemText(i-1,j,str);
	}

	copy=L;
	
}

void CGaokaoDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	CSliderCtrl *slider=(CSliderCtrl *)pScrollBar;
	CString sValue;sValue.Format("%d",slider->GetPos());
	huakuai=slider->GetPos();
	m_strEdit=sValue;
	UpdateData(FALSE);
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CGaokaoDlg::OnOutofmemorySlider1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

⌨️ 快捷键说明

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