Guest User

Untitled

a guest
Jan 19th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5. char** myMergeSort(char** listOfWords, int length);
  6. char** merge(char** left, char** right, int, int);
  7.  
  8. int main() {
  9.  
  10. char array[][] = {{'h','1'},
  11. {'a'},
  12. {'a'},
  13. {'r'},
  14. {'q'}};
  15.  
  16. int size = 7;
  17.  
  18. int* result = myMergeSort(array, size);
  19.  
  20. for(int i=0; i<size; i++){
  21. cout << *(result+i) << endl;
  22. }
  23.  
  24. return 0;
  25.  
  26. }
  27.  
  28. char** myMergeSort(char** arr, int size) {
  29. if(size <= 1) return arr;
  30.  
  31. int mid =size/2;
  32.  
  33. char** left = new char*[mid];
  34. char** right = new char*[size-mid];
  35. char** res = new char*[size];
  36.  
  37. for(int i=0; i<mid; i++) {
  38. *(left+i) = *(arr+i);
  39. }
  40. for(int i=0; i<size-mid; i++) {
  41. *(right+i) = *(arr+i+mid);
  42. }
  43. left = myMergeSort(left, mid);
  44. right = myMergeSort(right, size-mid);
  45. res = merge(left, right, mid, size-mid);
  46.  
  47. return res;
  48. }
  49.  
  50. char** merge(char** left, char** right, int leftsize, int rightsize) {
  51. char** res = new char*[leftsize+rightsize];
  52. int count=0;
  53. int cur_left=0;
  54. int cur_right=0;
  55.  
  56. while(cur_left < leftsize || cur_right < rightsize) {
  57. if(cur_left < leftsize && cur_right < rightsize) {
  58. if(*(left+cur_left) <= *(right+cur_right)) {
  59. *(res+count) = *(left+cur_left);
  60. cur_left++;
  61. } else {
  62. *(res+count) = *(right+cur_right);
  63. cur_right++;
  64. }
  65. } else if(cur_left < leftsize) {
  66. *(res+count) = *(left+cur_left);
  67. cur_left++;
  68. } else if(cur_right < rightsize) {
  69. *(res+count) = *(right+cur_right);
  70. cur_right++;
  71. }
  72. count++;
  73. }
  74.  
  75. return res;
  76. }
Add Comment
Please, Sign In to add comment