各种排序算法的稳定性和时间复杂度小结(2)

2019-01-12 10:39

m_strDatamember = NULL; }

CMyData::CMyData(int Index,char* strData): m_iIndex(Index), m_iDataSize(0),

m_strDatamember(NULL) {

m_iDataSize = strlen(strData);

m_strDatamember = new char[m_iDataSize+1]; strcpy(m_strDatamember,strData); }

CMyData& CMyData::operator =(CMyData &SrcData) {

m_iIndex = SrcData.m_iIndex;

m_iDataSize = SrcData.GetDataSize();

m_strDatamember = new char[m_iDataSize+1]; strcpy(m_strDatamember,SrcData.GetData()); return *this; }

bool CMyData::operator <(CMyData& data ) {

return m_iIndex

bool CMyData::operator >(CMyData& data ) {

return m_iIndex>data.m_iIndex; }

///////////////////////////////////////////////////////////

////////////////////////////////////////////////////////// //主程序部分

#include #include \

template

void run(T* pData,int left,int right) {

int i,j;

T middle,iTemp; i = left; j = right;

//下面的比较都调用我们重载的操作符函数 middle = pData[(left+right)/2]; //求中间值 do{

while((pData[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);//如果两边扫描的下标交错,就停止(完成一次)

//当左边部分有值(left

run(pData,left,j);

//当右边部分有值(right>i),递归右半边 if(right>i)

run(pData,i,right); }

template

void QuickSort(T* pData,int Count) {

run(pData,0,Count-1); }

void main() {

CMyData data[] = { CMyData(8,\ CMyData(7,\ CMyData(6,\ CMyData(5,\ CMyData(4,\ CMyData(3,\ CMyData(2,\ CMyData(1,\ };

QuickSort(data,8); for (int i=0;i<8;i++)

cout<


各种排序算法的稳定性和时间复杂度小结(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浙教版科学七下第四章不断运动的地球-辅导资料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: