Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- VOID FileSorter::MergeSortLines(LPSTR* lpsLines, DWORD dwLeft, DWORD dwRight)
- {
- if (dwLeft == dwRight)
- {
- return;
- }
- DWORD dwMiddle = (dwRight + dwLeft) / 2;
- MergeSortLines(lpsLines, dwLeft, dwMiddle);
- MergeSortLines(lpsLines, dwMiddle + 1, dwRight);
- DWORD dwBufferLength = dwRight - dwLeft + 1;
- LPSTR* lpsBuffer = (LPSTR*)calloc(dwBufferLength, sizeof(LPSTR));
- DWORD dwLeftPartElement = dwLeft, dwRightPartElement = dwMiddle + 1;
- DWORD dwInsertIndex = 0;
- while ((dwLeftPartElement <= dwMiddle) && (dwRightPartElement <= dwRight))
- {
- if (strcmp(lpsLines[dwLeftPartElement], lpsLines[dwRightPartElement]) < 0)
- {
- lpsBuffer[dwInsertIndex++] = lpsLines[dwLeftPartElement++];
- }
- else
- {
- lpsBuffer[dwInsertIndex++] = lpsLines[dwRightPartElement++];
- }
- }
- while (dwLeftPartElement <= dwMiddle)
- {
- lpsBuffer[dwInsertIndex++] = lpsLines[dwLeftPartElement++];
- }
- while (dwRightPartElement <= dwRight)
- {
- lpsBuffer[dwInsertIndex++] = lpsLines[dwRightPartElement++];
- }
- for (DWORD dwCopyIndex = 0; dwCopyIndex < dwBufferLength; ++dwCopyIndex)
- {
- lpsLines[dwLeft + dwCopyIndex] = lpsBuffer[dwCopyIndex];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement