CStringArray的排序问题

原文出处: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 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值