Hello people I have only a little problem with this task.
I think I have solved the rask right but I am not sure perhaps all experts here can help me:
Task:
It is a function to be created, which by an array a with the method "Sort
Mix "ascending.
Function using recursion: sortMerge (n, a)
Here the procedure is as follows:
If an item contains a maximum of one is finished (already sorted)
otherwise
Create 2 matching arrays b and c
Train 2 halves of the array and save it in a new array b and c
Note:
a new array of names h and m elements can be generated as follows:
double * h = new double [m];
The type is double; other similar types;
m is an expression / a variable of type int
With delete [] h, you can delete it again.
Sort b and c with SortMerge
Mix b and c with the function of internship 9 and store the result in a
Delete b and c.
Proceed to creating a suitable program to test the function.
Example of a step in the algorithm:
Sort is a: 11 2 9 7 8 3 2 with 7 elements.
In 2 parts disassemble and store in b and c: b: 11 2 9 c: 7 8 3 2
The 2 parts with SortMerge by: b: 2 9 11 c: 2 3 7 8
The 2 parts to a mix a: 2 2 3 7 8 9 11
My Programm:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#include <iostream>
using namespace std;
int a[] = {11, 2, 9, 7, 8, 3, 2};
int n = 7;
void merge(int *a,int p,int *b,int q, int *c,int n);
void sortMerge(int n, int *a) {
if (n>1) {
int *b = new int[n/2];
int *c = new int[(n + 1)/2];
int i;
for(i=0; i < n/2; i++) {
b[i] = a[i];
}
for(i=n/2; i < n; i++) {
c[i - n/2] = a[i];
}
sortMerge(n/2, b);
sortMerge(n-n/2, c);
merge(b,n/2,c,n-n/2,a,n);
delete[] b;
delete[] c;
}
}
void merge(int *b,int p,int *c,int q, int *a,int n) {
int i=0,j=0,k=0;
while(i<p && j<q) {
if(b[i]<=c[j]) {
a[k]=b[i];
i++;
} else {
a[k]=c[j];
j++;
}
k++;
}
if(i==p) {
while(j<q) {
a[k]=c[j];
j++;
k++;
}
} else {
while(i<p) {
a[k]=b[i];
i++;
k++;
}
}
}
int main(){
sortMerge(7, a);
for (int i=0; i<n; i++) cout << a[i] << " ";
return 0;
}
|
Is this programm so ok?
And can please someone tell me how I can modify the program so that when I run the programm I can test the function?
For example when I run I have to type numbers and it shows the numbers sortet like its written in the task?