944,092 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 70596
  • C++ RSS
Nov 23rd, 2004
0

Merge sort

Expand Post »
Can someone point me in the right direction on implementing a merge sort.
Here is what the main program will look like. THanks.

C++ Syntax (Toggle Plain Text)
  1. int main(void)
  2. {
  3. int ar[100];
  4.  
  5. int i, v, len;
  6.  
  7. for (i=0; i<100; i++) {
  8. cout << "enter a number (-1 to quit): ";
  9. cin >> v;
  10.  
  11. if (v < 0) break;
  12.  
  13. ar[i] = v;
  14. }
  15.  
  16. len = i;
  17.  
  18. cout << "main: before sort:\n";
  19. for (i=0; i<len; i++) {
  20. cout << "main: ar[" << i << "] = " << ar[i] << endl;
  21. }
  22.  
  23. mergesort ms(ar, len);
  24.  
  25. cout << "main: after sort:\n";
  26. for (i=0; i<len; i++) {
  27. cout << "main: ar[" << i << "] = " << ar[i] << endl;
  28. }
Similar Threads
Reputation Points: 10
Solved Threads: 0
Unverified User
skeet123 is offline Offline
20 posts
since Nov 2004
Nov 24th, 2004
0

Re: Merge sort

Regarding the merge sort u shud first specify do u want 2-way merge sort , 3-way merge or n-way.well merge sort algo is as follows:

Function Mergesort (field, lower, upper)
if lower = upper then do nothing (field is sorted)
else
middle = (upper + lower)/2
Mergesort (field, lower, middle)
Mergesort (field, middle+1, upper)
Merge (field, lower, middle, upper)
return field


Function Merge (field, lower, middle, upper)
Let ileft = lower, iright = middle+1, ihelp = lower
While ileft ≤ middle AND iright ≤ upper do
if field[ileft] ≤ field[iright] then
ifield[ihelp] = field[left]
increment ihelp, increment iright
While ileft ≤ middle do
ifield[ihelp] = field[ileft]
increment ihelp, increment ileft
While iright ≤ upper do
ifield[ihelp] = field[iright]
increment ihelp, increment iright
For ihelp from lower to upper do
field[ihelp] = ifield[ihelp]
return field
Thus in plain english do the following steps.

First divide the array into two approximately equal large sub-arrays.

Sort each of these sub-arrays separately.

Merge the resolting sorted sub-arrays into the resulting subarray
Reputation Points: 7
Solved Threads: 1
Junior Poster in Training
harshchandra is offline Offline
68 posts
since Nov 2004
Dec 9th, 2004
0

Re: Merge sort

#include <iostream.h>
int mergesort;
int main(void)
{
int ar[100];

int i, v, len;

for (i=0; i<100; i++) {
cout << "enter a number (-1 to quit): ";
cin >> v;

if (v < 0) break;

ar[i] = v;
}

len = i;

cout << "main: before sort:\n";
for (i=0; i<len; i++) {
cout << "main: ar[" << i << "] = " << ar[i] << endl;
}

mergesort;

cout << "main: after sort:\n";
for (i=0; i<len; i++) {
cout << "main: ar[" << i << "] = " << ar[i] << endl;
}
}
Reputation Points: 11
Solved Threads: 1
Newbie Poster
yb1pls is offline Offline
24 posts
since Dec 2004
Dec 9th, 2004
0

Re: Merge sort

Quote originally posted by yb1pls ...
#include <iostream.h>
int mergesort;
int main(void)
{
int ar[100];

int i, v, len;

for (i=0; i<100; i++) {
cout << "enter a number (-1 to quit): ";
cin >> v;

if (v < 0) break;

ar[i] = v;
}

len = i;

cout << "main: before sort:\n";
for (i=0; i<len; i++) {
cout << "main: ar[" << i << "] = " << ar[i] << endl;
}

mergesort;

cout << "main: after sort:\n";
for (i=0; i<len; i++) {
cout << "main: ar[" << i << "] = " << ar[i] << endl;
}
}
It is not April 1 yet!!!
Even if you had this magical global integer called mergesort, you still might have to tell it what to sort. Dream on!!
Moderator
Reputation Points: 1333
Solved Threads: 1403
DaniWeb's Hypocrite
vegaseat is offline Offline
5,792 posts
since Oct 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: Help with a triangle shape
Next Thread in C++ Forum Timeline: Integer data type





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC