这段时间借口太多了,说要搞这个,搞那个。最后什么都没搞出来,帮人家搞了很多东西。自己的东西都不知道在哪里,准备好写点东西,网上东走西看,一点东西都没搞出来。周末的时间基本被人家定了,上课,帮人家买电脑,帮人家搞程序。哇,写作业的时候才发现,好久没看学校发的书了。大学学的太多,应用的很少,业余学的用处不少。因为学的太杂,质量不高。所以我在我们学校是个伪人才,不怕自己打击自己,因为是事实吧。这两周要努力去写完那点东西,还要跟华七七搞英文站,都不知道怎么去搞,英文太差,所以一直在学。这个也不是我写的,是一高手帮别人写的,然后人家拿来请教我。我讲解了一会,之后那人就不见了。
// MySort.h: interface for the CMySort class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MYSORT_H__A85E5CA1_77B0_4144_B5BF_2997EADB4B16__INCLUDED_)
#define AFX_MYSORT_H__A85E5CA1_77B0_4144_B5BF_2997EADB4B16__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#define _AUTOTEST_OPEN // 自测试开关 注释掉这个就关闭自测试
template <class T, int nLen>
class CMySort
{
public:
CMySort();
virtual ~CMySort();
void dce();
protected:
T* m_data;
int m_nLen;
protected:
//输出函数
void Output(int n);
void mergesort();
//两路合并排序
void Merge(int i1,int j1,int i2,int j2);
void Quicksort();
//快速排序
void Quick(int s,int t);
void SWAP(T &a,T &b);
//插入排序
void InsertSort();
//选择排序
void SelectSort();
// 冒泡排序
void Popsort();
};
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
template<class T, int nLen>
CMySort<T, nLen>::CMySort()
{
m_data=new T[nLen];
m_nLen = nLen;
}
template <class T, int nLen>
CMySort<T, nLen>::~CMySort()
{
delete[] m_data;
m_data = NULL;
}
// 冒泡排序
template <class T, int nLen>
void CMySort<T, nLen>::Popsort()
{
T temp;
int i,j;
for(i=0;i<nLen;i++)
for(j=i+1;j<nLen;j++)
{
if(m_data[i]>m_data[j])
{
temp=m_data[i];
m_data[i]=m_data[j];
m_data[j]=temp;
}
}
}
//选择排序
template <class T, int nLen>
void CMySort<T, nLen>::SelectSort()
{
T temp;
int inLen;
for(int i=0;i<nLen-1;i++)
{
temp = m_data[i];
inLen = i;
for(int j=i+1;j<nLen;j++)
{
if(m_data[j]<temp)
{
temp = m_data[j];
inLen = j;
}
}
m_data[inLen]=m_data[i];
m_data[i]=temp;
}
}
//插入排序
template <class T, int nLen>
void CMySort<T, nLen>::InsertSort()
{
T temp;
int i,i_flag;
for(i=1;i<nLen;i++)
{
temp = m_data[i];
i_flag = i;
while((i_flag>0)&&(temp<m_data[i_flag-1]))
{
m_data[i_flag]=m_data[i_flag-1];
i_flag--;
}
m_data[i_flag]=temp;
}
}
template <class T, int nLen>
void CMySort<T, nLen>::SWAP(T &a,T &b)
{
T temp;
temp=a;
a=b;
b=temp;
}
//快速排序
template <class T, int nLen>
void CMySort<T, nLen>::Quick(int s,int t)
{
int i,j;
if(s<t)
{
i=s;
j=t+1;
while(1)
{
do i++;
while(!(m_data[s]<=m_data[i]||i==t));
do j--;
while(!(m_data[s]>=m_data[j]||j==s));
if(i<j)
SWAP(m_data[i],m_data[j]);
else
break;
}
SWAP(m_data[s],m_data[j]);
Quick(s,j-1);
Quick(j+1,t);
}
}
template <class T, int nLen>
void CMySort<T, nLen>::Quicksort()
{
Quick(0,nLen-1);
}
//两路合并排序
template <class T, int nLen>
void CMySort<T, nLen>::Merge(int i1,int j1,int i2,int j2)
{
T *temp=new T[j2-i1+1];
int i=i1,j=i2,k=0;
while(i<=j1&&j<=j2)
if(m_data[i]<m_data[j])
temp[k++]=m_data[i++];
else
temp[k++]=m_data[j++];
while(i<=j1)
temp[k++]=m_data[i++];
while(j<=j2)
temp[k++]=m_data[j++];
for(i=0;i<k;i++)
m_data[i1++]=temp[i];
delete[] temp;
}
template <class T, int nLen>
void CMySort<T, nLen>::mergesort()
{
int i1,j1,i2,j2;
int size=1;
while(size<nLen)
{
i1=0;
while(i1+size<nLen)
{
i2=i1+size;
j1=i2-1;
if(i2+size-1>nLen-1)
j2=nLen-1;
else
j2=i2+size-1;
Merge(i1,j1,i2,j2);
i1=j2+1;
}
size*=2;
}
}
//输出函数
template <class T, int nLen>
void CMySort<T, nLen>::Output(int n)
{
int i;
switch(n)
{
case 1: Popsort(); break;
case 2
: SelectSort(); break;
case 3: InsertSort(); break;
case 4: Quicksort(); break;
case 5: mergesort(); break;
}
for(i=0;i<nLen;i++)
cout<<m_data[i]<<" ";
cout<<endl;
}
template<class T, int nLen>
void CMySort<T, nLen>::dce()
{
#ifdef _AUTOTEST_OPEN
srand((unsigned int)time(NULL));
int i;
int j;
if (typeid(double*) == typeid(m_data))
{
for (i=0; i<nLen; i++)
{
m_data[i] = ((double)(rand()%1000+1))/10.0;
cout<<m_data[i]<<" ";
}
}
else if (typeid(char*) == typeid(m_data))
{
for (i=0; i<nLen; i++)
{
m_data[i] = rand()%26+'A';
cout<<m_data[i]<<" ";
}
}
else if (typeid(string*) == typeid(m_data))
{
for (i=0; i<nLen; i++)
{
int nRandLen = rand()%6+3;
for (j=0; j<nRandLen; j++)
{
m_data[i] += rand()%26+'A';
}
cout<<m_data[i]<<" ";
}
}
else
{
return;
}
cout<<endl;
cout<<"1:冒泡排序"<<endl;
Output(1);
cout<<"2:选择排序"<<endl;
Output(2);
cout<<"3:插入排序"<<endl;
Output(3);
cout<<"4:快速排序"<<endl;
Output(4);
cout<<"5:两路合并排序"<<endl;
Output(5);
#else
cout<<"输入"<<nLen<<"个:";
for(int r=0;r<nLen;r++)
cin>>m_data[r];
int n;
cout<<"1:冒泡排序"<<endl;
cout<<"2:选择排序"<<endl;
cout<<"3:插入排序"<<endl;
cout<<"4:快速排序"<<endl;
cout<<"5:两路合并排序"<<endl;
cin>>n;
Output(n);
#endif
}
#endif // !defined(AFX_MYSORT_H__A85E5CA1_77B0_4144_B5BF_2997EADB4B16__INCLUDED_)
最新评论
朋友 交换链接吗
我也要评论,东华理工
很强
你是老师啊?
写的这都是什么语言啊,看不懂呢
包子还是一个有为青年。
关于旅行,总有许多幸福和迷恋。初秋浪漫而至,期待自己的下一站快乐。
楼主你好,我最近也在研究安卓无线点餐,不知您的源码能否分享一下,提供一些思路,谢谢:)
嗯嗯,原来我以前的姿势都不对的啊
对不起,我也没搞清楚,是想下载别人的模板,都是在网上看到的,人家的“空间或者服务器主机,的文件地址咱们也不知道呀,怎么填写读入目录呀。 这样的话,根本是下不了别人网站上的模板吧。 请教详细的下载方法。最好是人家在线的网站