2014년 6월 19일 목요일

[미완] CString Sort

#include <afx.h>
#include <iostream.h>
#include <afxcoll.h>

class CSortStringArray : public CStringArray {
public:
   void Sort();
private:
   BOOL CompareAndSwap(int pos);
};
void CSortStringArray::Sort()
{
   BOOL bNotDone = TRUE;

   while (bNotDone)
   {
      bNotDone = FALSE;
      for(int pos = 0;pos < GetUpperBound();pos++)
         bNotDone |= CompareAndSwap(pos);
   }
}
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;
}
void main()
{
   CSortStringArray sortArray;

   sortArray.Add(CString("Zebra"));
   sortArray.Add(CString("Bat"));
   sortArray.Add(CString("Apple"));
   sortArray.Add(CString("Mango"));

   for (int i = 0; i <= sortArray.GetUpperBound(); i++)
      cout << sortArray[i] << endl;

   sortArray.Sort();
   cout << endl;

   for (int j = 0; j <= sortArray.GetUpperBound(); j++)
      cout << sortArray[j] << endl;
}

댓글 없음:

댓글 쓰기