Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3.  
  4. using namespace std;
  5.  
  6. void fillArray(int selectionArray[], int mergeArray[], int SIZE){
  7. for(int c = 0; c < SIZE; c++){
  8. srand((unsigned)time(0));
  9. selectionArray[c] = (rand() % 1000) + 1;
  10. mergeArray[c] = selectionArray[c];
  11. }
  12. }
  13.  
  14. int selectionSort(int array[], int SIZE) {
  15. int i;
  16. int j;
  17. int indexSmallest;
  18. int temp;
  19.  
  20. int count = 0;
  21.  
  22. for (i = 0; i < SIZE - 1; ++i) {
  23. indexSmallest = i;
  24. for (j = i + 1; j < SIZE; ++j) {
  25. if (array[j] < array[indexSmallest]) {
  26. indexSmallest = j;
  27. }
  28. }
  29. temp = array[i];
  30. array[i] = array[indexSmallest];
  31. count++;
  32. array[indexSmallest] = temp;
  33. count++;
  34. }
  35. return count;
  36. }
  37.  
  38. int merge(int array[], int i, int j, int k, int count) {
  39. int mergedSize;
  40. int mergePos;
  41. int leftPos;
  42. int rightPos;
  43. int* mergedNumbers = nullptr;
  44.  
  45. mergePos = 0;
  46. mergedSize = k - i + 1;
  47. leftPos = i;
  48. rightPos = j + 1;
  49. mergedNumbers = new int[mergedSize];
  50.  
  51. while (leftPos <= j && rightPos <= k) {
  52. if (array[leftPos] < array[rightPos]) {
  53. mergedNumbers[mergePos] = array[leftPos];
  54. ++leftPos;
  55. count++;
  56. }
  57. else {
  58. mergedNumbers[mergePos] = array[rightPos];
  59. ++rightPos;
  60. count++;
  61. }
  62. ++mergePos;
  63. }
  64.  
  65. while (leftPos <= j) {
  66. mergedNumbers[mergePos] = array[leftPos];
  67. ++leftPos;
  68. ++mergePos;
  69. count++;
  70. }
  71.  
  72. while (rightPos <= k) {
  73. mergedNumbers[mergePos] = array[rightPos];
  74. ++rightPos;
  75. ++mergePos;
  76. count++;
  77. }
  78.  
  79. for (mergePos = 0; mergePos < mergedSize; ++mergePos) {
  80. array[i + mergePos] = mergedNumbers[mergePos];
  81. }
  82. return count;
  83. }
  84.  
  85. int mergeSort(int array[], int i, int k) {
  86. int j;
  87.  
  88. int count = 0;
  89.  
  90. if (i < k) {
  91. j = (i + k) / 2;
  92. mergeSort(array, i, j);
  93. mergeSort(array, j + 1, k);
  94.  
  95. count = count + merge(array, i, j, k, count);
  96. }
  97. return count;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement