Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. VOID FileSorter::MergeSortLines(LPSTR* lpsLines, DWORD dwLeft, DWORD dwRight)
  2. {
  3. if (dwLeft == dwRight)
  4. {
  5. return;
  6. }
  7.  
  8. DWORD dwMiddle = (dwRight + dwLeft) / 2;
  9. MergeSortLines(lpsLines, dwLeft, dwMiddle);
  10. MergeSortLines(lpsLines, dwMiddle + 1, dwRight);
  11.  
  12. DWORD dwBufferLength = dwRight - dwLeft + 1;
  13. LPSTR* lpsBuffer = (LPSTR*)calloc(dwBufferLength, sizeof(LPSTR));
  14. DWORD dwLeftPartElement = dwLeft, dwRightPartElement = dwMiddle + 1;
  15. DWORD dwInsertIndex = 0;
  16.  
  17. while ((dwLeftPartElement <= dwMiddle) && (dwRightPartElement <= dwRight))
  18. {
  19. if (strcmp(lpsLines[dwLeftPartElement], lpsLines[dwRightPartElement]) < 0)
  20. {
  21. lpsBuffer[dwInsertIndex++] = lpsLines[dwLeftPartElement++];
  22. }
  23. else
  24. {
  25. lpsBuffer[dwInsertIndex++] = lpsLines[dwRightPartElement++];
  26. }
  27. }
  28. while (dwLeftPartElement <= dwMiddle)
  29. {
  30. lpsBuffer[dwInsertIndex++] = lpsLines[dwLeftPartElement++];
  31. }
  32. while (dwRightPartElement <= dwRight)
  33. {
  34. lpsBuffer[dwInsertIndex++] = lpsLines[dwRightPartElement++];
  35. }
  36.  
  37. for (DWORD dwCopyIndex = 0; dwCopyIndex < dwBufferLength; ++dwCopyIndex)
  38. {
  39. lpsLines[dwLeft + dwCopyIndex] = lpsBuffer[dwCopyIndex];
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement