Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- merge_sort.cpp.orig 2015-06-11 19:03:30.905330000 +0200
- +++ merge_sort.cpp 2015-06-11 19:12:19.393330000 +0200
- @@ -7,17 +7,17 @@
- using namespace std;
- int d [100];
- +int N = 100;
- void mergeSort(int p, int k);
- void merge_ (int p, int q, int k);
- int main() {
- int i;
- - int N = 100;
- srand((unsigned)time(NULL));
- for(i = 0; i < N; i++) d[i] = rand() % 100;
- for(i = 0; i < N; i++) cout << setw(4) << d[i];
- cout << endl;
- //Sortujemy
- - mergeSort(0, 99);
- + mergeSort(0, N);
- // Wyświetlamy wynik sortowania
- cout << "Po sortowaniu:\n\n";
- for(i = 0; i < N; i++) cout << setw(4) << d[i];
- @@ -25,14 +25,11 @@
- return 0;
- }
- void mergeSort(int p, int k) {
- - for (int i=0; i<100; i++) {
- - cout << d[i] << "\n";
- - }
- - if (p<k) {
- + if ((k-p) > 1) {
- int q = p+k;
- q = q/2;
- mergeSort(p, q);
- - mergeSort(q+1, k);
- + mergeSort(q, k);
- merge_(p, q, k);
- }
- }
- @@ -43,22 +40,30 @@
- int* R = new int [n2];
- for (int i=0; i<n1; i++) {
- L[i] = d[p+i];
- - //cout << d[p+i] << "\n";
- - //cout << L[i] << "\n";
- }
- for (int i=0; i<n2; i++) {
- R[i] = d[q+i];
- }
- int i = 0;
- int j = 0;
- - for (int k=0; k<=r; k++) {
- - if (L[i]<=R[j]) {
- - d[k]=L[i];
- - i=i+1;
- + int k = 0;
- + for (k = p; (k < r) && (i < n1) && (j < n2); k++) {
- + if (L[i]<=R[j])
- + d[k]=L[i++];
- + else
- + d[k]=R[j++];
- + }
- + if (i < n1) {
- + for (; (k < r) && (i < n1); k++, i++) {
- + d[k] = L[i];
- }
- - else {
- - d[k]=R[j];
- - j=j+1;
- + } else if (j < n2) {
- + for (; (k < r) && (j < n2); k++, j++) {
- + d[k] = R[j];
- }
- }
- + delete[] L;
- + L = NULL;
- + delete[] R;
- + R = NULL;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement