|
template<class ItemType>
inline void Swap(ItemType& item1, ItemType& item2)
{
ItemType tempItem;
tempItem = item1;
item1 = item2;
item2 = tempItem;
}
const int MAX_ITEMS = 20;
template<class ItemType>
void Merge(ItemType values[], int leftFirst, int leftLast,
int rightFirst, int rightLast)
{
ItemType tempArray[MAX_ITEMS];
int index = leftFirst;
int saveFirst = leftFirst;
while ((leftFirst <= leftLast) && (rightFirst <= rightLast))
{
if (values[leftFirst] < values[rightFirst])
{
tempArray[index] = values[leftFirst];
leftFirst++;
}
else
{
tempArray[index] = values[rightFirst];
rightFirst++;
}
index++;
}
while (leftFirst <= leftLast)
{
tempArray[index] = values[leftFirst];
leftFirst++;
index++;
}
while (rightFirst <= rightLast)
{
tempArray[index] = values[rightFirst];
rightFirst++;
index++;
}
for (index = saveFirst; index <= rightLast; index++)
values[index] = tempArray[index];
}
template<class ItemType>
void MergeSort(ItemType values[], int first, int last)
{
if ( first < last)
{
int middle = (first + last) / 2;
MergeSort(values, first, middle);
MergeSort(values, middle + 1, last);
Merge(values, first, middle, middle + 1, last);
}
}
저것이 mergesort 구여... 구체적인 숫자들을 예로들어 설명 해주셨으면 좋겠음다
저기 재귀함수 보이시져 저것 때문에 골치아퍼요..
저렇게 짜는것이 호율적인건가여 아닌가여 ...
설명부탁함다 꾸벅 (--)(__)
|