Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #define LEN 10
- using namespace std;
- void fill_array(int t[])
- {
- srand(time(0));
- for(int i = 0; i < LEN; i++)
- t[i] = rand() % 101;
- }
- void print_array(int t[])
- {
- for(int i = 0; i < LEN; i++)
- cout << t[i] << " ";
- cout << endl;
- }
- void merge(int array[], int start, int middle, int end)
- {
- int* temp = new int[end - start];
- int i = start;
- int j = middle + 1;
- int k = 0;
- while ((i <= middle) && (j <= end))
- {
- if(array[j] < array[i])
- {
- temp[k] = array[j];
- j++;
- }
- else
- {
- temp[k] = array[i];
- i++;
- }
- k++;
- }
- if (i <= middle)
- {
- while(i <= middle)
- {
- temp[k] = array[i];
- i++;
- k++;
- }
- }
- else
- {
- while(j <= end)
- {
- temp[k] = array[j];
- j++;
- k++;
- }
- }
- for(i = 0; i <= end - start; i++)
- {
- array[start + i] = temp[i];
- }
- }
- void merge_sort(int array[], int start, int end)
- {
- if (start != end)
- {
- int middle = (end + start) / 2;
- merge_sort(array, start, middle);
- merge_sort(array, middle + 1, end);
- merge(array, start, middle, end);
- }
- }
- int main(int argc, char ** argv)
- {
- int array[LEN];
- fill_array(array);
- print_array(array);
- merge_sort(array, 0, LEN);
- cout<<endl<<endl;
- print_array(array);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment