/******************************************************************************************** ezw2wBub.cpp Jim Millard for CO311 EZwindows sort visualization for two-way Bubble Sort ********************************************************************************************/ #include "ezw2wBub.h" #include "ezwSwap.h" #include "ezwUtils.h" void TwoWayBubbleSort(SimpleWindow& W, RaySegment* ptrR[], int A[], const int size, const short load) { int begin = 0, end = size-1, current; bool DoneSorting; do { DoneSorting = true; for (current = begin; current < end; current++) if (A[current] > A[current+1]) { DoneSorting = false; Swap(A[current+1],A[current]); Swap(W, *ptrR[current+1], *ptrR[current], load); } Highlight(*ptrR[end], Green); end--; if (!DoneSorting) for (current = end; current > begin; current--) if (A[current] < A[current-1]) { DoneSorting = false; Swap(A[current],A[current-1]); Swap(W, *ptrR[current], *ptrR[current-1], load); } Highlight(*ptrR[begin],Green); begin++; } while (!DoneSorting); }