举例:
CSortStringArray sortArray;
sortArray.Add(CString("Zebra\r\n"));
sortArray.Add(CString("Bat\r\n"));
sortArray.Add(CString("Apple\r\n"));
sortArray.Add(CString("Mango\r\n"));
sortArray.Sort();
/*************************************************************************/
// CSortStringArray.cpp: implementation of the CSortStringArray class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CSortStringArray.h"
void CSortStringArray::Sort()
{
BOOL bNotDone = TRUE;
while (bNotDone)
{
bNotDone = FALSE;
for(int pos = 0;pos < GetUpperBound();pos++)
bNotDone |= CompareAndSwap(pos);
}
return;
}
BOOL CSortStringArray::CompareAndSwap(int pos)
{
CString temp;
int posFirst = pos;
int posNext = pos + 1;
if (GetAt(posFirst).CompareNoCase(GetAt(posNext)) > 0)
{
temp = GetAt(posFirst);
SetAt(posFirst, GetAt(posNext));
SetAt(posNext, temp);
return TRUE;
}
return FALSE;
}
/**************************************************************************/
// CSortStringArray.h : header file
//
#if !defined(AFX_SORTSTRINGARRAY_H_INCLUDED_)
#define AFX_SORTSTRINGARRAY_H_INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CSortStringArray
class CSortStringArray : public CStringArray {
public:
void Sort();
private:
BOOL CompareAndSwap(int pos);
};
#endif // !defined(AFX_SORTSTRINGARRAY_H_INCLUDED_)
/***************************************************************************/
评论