#define
_AFXDLL
#include < afx.h >
#include < afxcoll.h >
#include < iostream >
using namespace std;
class CSortStringArray: public CStringArray {
public:
voidSort();
private:
BOOLCompareAndSwap(intpos);
} ;
void CSortStringArray::Sort()
{
BOOLbNotDone=TRUE;
while(bNotDone)
{
bNotDone=FALSE;
for(intpos=0;pos<GetUpperBound();pos++)
bNotDone|=CompareAndSwap(pos);
}
}
BOOLCSortStringArray::CompareAndSwap( int pos)
{
CStringtemp;
intposFirst=pos;
intposNext=pos+1;
if(GetAt(posFirst).CompareNoCase(GetAt(posNext))>0)
{
temp=GetAt(posFirst);
SetAt(posFirst,GetAt(posNext));
SetAt(posNext,temp);
returnTRUE;
}
returnFALSE;
}
void main()
{
CSortStringArraysortArray;
sortArray.Add(CString("Zebra"));
sortArray.Add(CString("Bat"));
sortArray.Add(CString("Apple"));
sortArray.Add(CString("Mango"));
for(inti=0;i<=sortArray.GetUpperBound();i++)
cout<<sortArray[i]<<endl;
sortArray.Sort();
cout<<endl;
for(intj=0;j<=sortArray.GetUpperBound();j++)
cout<<sortArray[j]<<endl;
system("pause");
}
#include < afx.h >
#include < afxcoll.h >
#include < iostream >
using namespace std;
class CSortStringArray: public CStringArray {
public:
voidSort();
private:
BOOLCompareAndSwap(intpos);
} ;
void CSortStringArray::Sort()
{
BOOLbNotDone=TRUE;
while(bNotDone)
{
bNotDone=FALSE;
for(intpos=0;pos<GetUpperBound();pos++)
bNotDone|=CompareAndSwap(pos);
}
}
BOOLCSortStringArray::CompareAndSwap( int pos)
{
CStringtemp;
intposFirst=pos;
intposNext=pos+1;
if(GetAt(posFirst).CompareNoCase(GetAt(posNext))>0)
{
temp=GetAt(posFirst);
SetAt(posFirst,GetAt(posNext));
SetAt(posNext,temp);
returnTRUE;
}
returnFALSE;
}
void main()
{
CSortStringArraysortArray;
sortArray.Add(CString("Zebra"));
sortArray.Add(CString("Bat"));
sortArray.Add(CString("Apple"));
sortArray.Add(CString("Mango"));
for(inti=0;i<=sortArray.GetUpperBound();i++)
cout<<sortArray[i]<<endl;
sortArray.Sort();
cout<<endl;
for(intj=0;j<=sortArray.GetUpperBound();j++)
cout<<sortArray[j]<<endl;
system("pause");
}
参考: How to Sort a CStringArray in MFC<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />