1: // Created by Frank M. Carrano and Tim Henry.
2: // Copyright (c) 2013 __Pearson Education__. All rights reserved.
4: // Listing 11-2.
6: #include <iostream>
7: #include <string>
9: using namespace std;
10: template<class ItemType>
12: /** Sorts the items in an array into ascending order.
13: @pre None.
14: @post theArray is sorted into ascending order; n is unchanged.
15: @param theArray The given array.
16: @param n The size of theArray. */
17: void bubbleSort(ItemType theArray[], int n)
18: {
19: bool sorted = false; // False when swaps occur
20: int pass = 1;
21: while (!sorted && (pass < n))
22: {
23: // At this point, theArray[n+1-pass..n-1] is sorted
24: // and all of its entries are > the entries in theArray[0..n-pass]
25: sorted = true; // Assume sorted
26: for (int index = 0; index < n - pass; index++)
27: {
28: // At this point, all entries in theArray[0..index-1]
29: // are <= theArray[index]
30: int nextIndex = index + 1;
31: if (theArray[index] > theArray[nextIndex])
32: {
33: // Exchange entries
34: std::swap(theArray[index], theArray[nextIndex]);
35: sorted = false; // Signal exchange
36: } // end if
37: } // end for
38: // Assertion: theArray[0..n-pass-1] < theArray[n-pass]
39:
40: pass++;
41: } // end while
42: } // end bubbleSort
44: int main()
45: {
46: string a[6] = {"Z", "X", "R", "K", "F", "B"};
47: bubbleSort(a, 6);
48: for (int i = 0; i < 6; i++)
49: cout << a[i] << " ";
50: cout << endl;
51: } // end main
53: /*
55: B F K R X Z
56:
57: */