Advertisement
Guest User

SearchFunctions

a guest
Mar 19th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  1. //
  2. // Created by Alex Preston on 2019-03-19.
  3. //
  4.  
  5. #include <ctime>
  6. #include <iostream>
  7. using namespace std;
  8. #include "SortFunctions.h"
  9.  
  10.  
  11. void fillArray(int ARR_SIZE, int selction[], int merge[]){
  12.  
  13. merge[ARR_SIZE];
  14. selction[ARR_SIZE];
  15. int rNum = 0;
  16. //cout << "IS this executing" << endl;
  17.  
  18. for(int i = 0; i < ARR_SIZE; i++){
  19. rNum = (rand() % 1000) + 1;
  20. selction[i] = rNum;
  21. merge[i] = rNum;
  22. }
  23.  
  24. }
  25.  
  26. void printArray(int arr[], int SIZE){
  27. //cout << "IS those executing" << endl;
  28. //cout << SIZE << endl;
  29. for(int i = 0; i < SIZE; i++){
  30. cout << arr[i] << " ";
  31. }
  32. // cout << "IS those this executing" << endl;
  33. }
  34.  
  35. int selectionSort(int numbers[], int numbersSize) {
  36. int i;
  37. int j;
  38. int ticker = 0;
  39. int indexSmallest;
  40. int temp; // Temporary variable for swap
  41. ticker+=5;
  42. ticker++;
  43. for (i = 0; i < numbersSize - 1; ++i) {
  44. ticker+=2;
  45. // Find index of smallest remaining element
  46. indexSmallest = i;
  47. ticker++;
  48. ticker++;
  49. for (j = i + 1; j < numbersSize; ++j) {
  50. ticker+=2;
  51. ticker++;
  52. if (numbers[j] < numbers[indexSmallest] ) {
  53. indexSmallest = j;
  54. ticker+=2;
  55.  
  56. }
  57. }
  58.  
  59. // Swap numbers[i] and numbers[indexSmallest]
  60. temp = numbers[i];
  61. numbers[i] = numbers[indexSmallest];
  62. numbers[indexSmallest] = temp;
  63. ticker+=3;
  64. }
  65. return ticker;
  66. }
  67.  
  68. int merge(int numbers[], int i, int j, int k, int ticker) {
  69. int mergedSize; // Size of merged partition
  70. int mergePos; // Position to insert merged number
  71. int leftPos; // Position of elements in left partition
  72. int rightPos; // Position of elements in right partition
  73. int* mergedNumbers = nullptr;
  74. mergePos = 0;
  75. mergedSize = k - i + 1;
  76. leftPos = i; // Initialize left partition position
  77. rightPos = j + 1; // Initialize right partition position
  78. mergedNumbers = new int[mergedSize]; // Dynamically allocates temporary array
  79. ticker+=10;
  80. // for merged numbers
  81.  
  82. // Add smallest element from left or right partition to merged numbers
  83. while (leftPos <= j && rightPos <= k) {
  84. ticker++;
  85. ticker++;
  86. if (numbers[leftPos] < numbers[rightPos]) {
  87. mergedNumbers[mergePos] = numbers[leftPos];
  88. ++leftPos;
  89. ticker+=3;
  90. }
  91. else {
  92. mergedNumbers[mergePos] = numbers[rightPos];
  93. ++rightPos;
  94. ticker+=2;
  95.  
  96. }
  97. ++mergePos;
  98. ticker++;
  99. }
  100.  
  101. // If left partition is not empty, add remaining elements to merged numbers
  102.  
  103. while (leftPos <= j) {
  104. mergedNumbers[mergePos] = numbers[leftPos];
  105. ++leftPos;
  106. ++mergePos;
  107. ticker+=4;
  108. }
  109.  
  110. // If right partition is not empty, add remaining elements to merged numbers
  111. while (rightPos <= k) {
  112. mergedNumbers[mergePos] = numbers[rightPos];
  113. ++rightPos;
  114. ++mergePos;
  115. ticker+=4;
  116. }
  117.  
  118. // Copy merge number back to numbers
  119. ticker++;
  120. for (mergePos = 0; mergePos < mergedSize; ++mergePos) {
  121. numbers[i + mergePos] = mergedNumbers[mergePos];
  122. ticker+=3;
  123. }
  124. int difTick = ticker;
  125. ticker++;
  126. return difTick;
  127. }
  128.  
  129. int mergeSort(int numbers[], int i, int k, int ticker) {
  130. int j;
  131. ticker++;
  132. //cout << "IS this working" << endl;
  133. ticker++;
  134. if (i < k) {
  135. j = (i + k) / 2; // Find the midpoint in the partition
  136. ticker++;
  137. // Recursively sort left and right partitions
  138. mergeSort(numbers, i, j, ticker);
  139. ticker++;
  140. mergeSort(numbers, j + 1, k, ticker);
  141. ticker++;
  142.  
  143. // Merge left and right partition in sorted order
  144. ticker += merge(numbers, i, j, k, ticker);
  145. }
  146. return ticker;
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement