📄 px.cpp
字号:
// PX.cpp : implementation file
//
#include "stdafx.h"
#include "CmyPX.h"
#include "PX.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPX dialog
CPX::CPX(CWnd* pParent /*=NULL*/)
: CDialog(CPX::IDD, pParent)
{
//{{AFX_DATA_INIT(CPX)
m_nInput = _T("");
m_nOutput = _T("");
m_nMethod = -1;
m_nUporDown = -1;
//}}AFX_DATA_INIT
}
void CPX::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPX)
DDX_Text(pDX, IDC_EDIT1, m_nInput);
DDX_Text(pDX, IDC_EDIT2, m_nOutput);
DDX_Radio(pDX, IDC_RADIO1, m_nMethod);
DDX_Radio(pDX, IDC_RADIO5, m_nUporDown);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPX, CDialog)
//{{AFX_MSG_MAP(CPX)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPX message handlers
void CPX::OnButton1()
{
// TODO: Add your control notification handler code here
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"Txt Files(*.txt)|*.txt||",NULL);
if(dlg.DoModal() == IDOK)
{
m_nInput=dlg.GetPathName();
SetDlgItemText(IDC_EDIT1,m_nInput);
}
}
void CPX::OnButton2()
{
// TODO: Add your control notification handler code here
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"Txt Files(*.txt)|*.txt||",NULL);
if(dlg.DoModal() == IDOK)
{
m_nOutput=dlg.GetPathName();
SetDlgItemText(IDC_EDIT2,m_nOutput);
}
}
void run(int *pData,int left,int right)
{
int i,j,middle,iTemp;
i=left;j=right;
middle=pData[(left+right)/2];
do{
while((pData[i]<middle)&&i<(right))
i++;
while((pData[j]>middle)&&j>left)
j--;
if (i<=j)
{
iTemp=pData[i];
pData[i]=pData[j];
pData[j]=iTemp;
i++;
j--;
}
}while(i<=j);
if(left<j)
run(pData,left,j);
if(right>i)
run(pData,i,right);
}
void QuickSort(int *pData,int count)
{
run(pData,0,count-1);
}
void CPX::Method1()
{
int count=10,k,j;
int iTemp;
Read();
for(j=0,k=0;j<count,k<count;j++,k++)
temp[j]=m_nIn[k];
QuickSort(temp,count);
if(m_nUporDown == 1)
{for( int i=0;i<count/2;i++){
iTemp=temp[i];
temp[i]=temp[count-1-i];
temp[count-1-i]=iTemp;}
}
Write();
}
void bubble2sort(int *pData,int count)
{
int iTemp,left=1,right=count-1,t;
do
{
for(int i=right;i>=left;i--)
{
if(pData[i]<pData[i-1])
{
iTemp=pData[i];
pData[i]=pData[i-1];
pData[i-1]=iTemp;
t=i;
}
}
left=t+1;
for(i=left;i<right+1;i++)
{
if(pData[i]<pData[i-1])
{
iTemp=pData[i];
pData[i]=pData[i-1];
pData[i-1]=iTemp;
t=i;
}
}
right=t-1;
}while(left<=right);
}
void CPX::Method2()
{ int count=10,iTemp,j,k;
Read();
for(j=0,k=0;j<count,k<count;j++,k++)
temp[j]=m_nIn[k];
bubble2sort(temp,count);
if(m_nUporDown == 1)
{for(int i=0;i<count/2;i++)
{ iTemp=temp[i];
temp[i]=temp[count-1-i];
temp[count-1-i]=iTemp; }
}
Write();
}
void misshel(int *p,int n)
{
int i,j,k,t;
k=n/2;
while(k>0)
{
for(j=k;j<=n-1;j++)
{
t=p[j];i=j-k;
while((i>=0)&&(p[i]>t))
{p[i+k]=p[i];i=i-k;}
p[i+k]=t;
}
k=k/2;
}
return;
}
void CPX::Method3()
{
int count=10,iTemp,j,k;
Read();
for(j=0,k=0;j<count,k<count;j++,k++)
temp[j]=m_nIn[k];
misshel(temp,count);
if(m_nUporDown == 1)
{for( int i=0;i<count/2;i++){
iTemp=temp[i];
temp[i]=temp[count-1-i];
temp[count-1-i]=iTemp;}
}
Write();
}
static void sift(int p[],int i,int n)
{
int j,t;
t=p[i];j=2*(i+1)-1;
while(j<=n)
{
if((j<n)&&(p[j]<p[j+1]))
j=j+1;
else if(t<p[j])
{p[i]=p[j];i=j;j=2*(i+1)-1;}
else j=n+1;
}
p[i]=t;
return;
}
void mheap(int p[],int n)
{
int i,mm,t;
mm=n/2;
for(i=mm-1;i>=0;i--)
sift(p,i,n-1);
for (i=n-1;i>=1;i--)
{
t=p[0];p[0]=p[i];p[i]=t;
sift(p,0,i-1);
}
}
void CPX::Method4()
{
int count=10,iTemp,j,k;
Read();
for(j=0,k=0;j<count,k<count;j++,k++)
temp[j]=m_nIn[k];
mheap(temp,count);
if(m_nUporDown == 1)
{for( int i=0;i<count/2;i++){
iTemp=temp[i];
temp[i]=temp[count-1-i];
temp[count-1-i]=iTemp;}
}
Write();
}
void CPX::Read()
{
FILE *fp=fopen(m_nInput,"r");
if(fp==NULL)
{
AfxMessageBox(CString("文件读入错误:\n")+m_nInput);
// return 0;
}
int i=0;
while(!feof(fp))
{
fscanf(fp, "%d",&m_nIn[i++]);
}
fclose(fp);
// return 0;
}
void CPX::Write()
{
int i;
for(i=0;i<10;i++)
{
m_nOut[i]=temp[i];
}
FILE *fp=fopen(m_nOutput,"w");
for (i = 0; i < 10; i ++)
{
fprintf(fp,"%d\n",m_nOut[i]);
}
fclose(fp);
// return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -