原文出处:http://support.microsoft.com/kb/120961/zh-cn
概要
< type="text/javascript">
您可使用本文中示例代码要排序 CStringArray 对象。 main() 函数构造 CStringArray 对象、 向其添加元素、 打印出元素、 调用 sort() 成员函数以排序, 和然后打印排序元素。 sort() 函数使用气泡排序算法来排序数组并调用 CompareAndSwap() 函数以比较每个字符串并交换这些元素。
示例代码
< type="text/javascript"> /*
* Compile options needed: /MT
*/
01
#include <afx.h>
02
#include <iostream.h>
03
#include <afxcoll.h>
04
05
class
CSortStringArray
:
public
CStringArray
{
06
public
:
07
void
Sort();
08
private
:
09
BOOL
CompareAndSwap(
int
pos);
10
};
11
void
CSortStringArray
::
Sort()
12
{
13
BOOL
bNotDone
=
TRUE;
14
15
while (
bNotDone)
16
{
17
bNotDone
=
FALSE;
18
for(
int
pos
=
0;
pos
<
GetUpperBound();
pos
++)
19
bNotDone
|=
CompareAndSwap(
pos);
20
}
21
}
22
BOOL
CSortStringArray
::
CompareAndSwap(
int
pos)
23
{
24
CString
temp;
25
int
posFirst
=
pos;
26
int
posNext
=
pos
+
1;
27
28
if (
GetAt(
posFirst
).
CompareNoCase(
GetAt(
posNext))
>
0)
29
{
30
temp
=
GetAt(
posFirst);
31
SetAt(
posFirst
,
GetAt(
posNext));
32
SetAt(
posNext
,
temp);
33
return
TRUE;
34
35
}
36
return
FALSE;
37
}
38
void
main()
39
{
40
CSortStringArray
sortArray;
41
42
sortArray
.
Add(
CString(
"Zebra"));
43
sortArray
.
Add(
CString(
"Bat"));
44
sortArray
.
Add(
CString(
"Apple"));
45
sortArray
.
Add(
CString(
"Mango"));
46
47
for (
int
i
=
0;
i
<=
sortArray
.
GetUpperBound();
i
++)
48
cout
<<
sortArray
[
i
]
<<
endl;
49
50
sortArray
.
Sort();
51
cout
<<
endl;
52
53
for (
int
j
=
0;
j
<=
sortArray
.
GetUpperBound();
j
++)
54
cout
<<
sortArray
[
j
]
<<
endl;
55
}