/********************************************************************************************
ezwShell.cpp
	Jim Millard
	for CO311

    EZwindows sort visualization for "Shell" Sort (modified bubble)

********************************************************************************************/

#include "ezwShell.h"
#include "ezwSwap.h"

void ShellSort(SimpleWindow& W, RaySegment* ptrR[], int A[], const int size, const short load)
    {
    bool DoneSorting = false;
    int delta = size/2;
    while (!DoneSorting)
        {
        DoneSorting = true;
        for (int current = 0; current < size-delta; current++)
            if (A[current] > A[current+delta])
                {
                DoneSorting = false;
                Swap(A[current+delta],A[current]);
                Swap(W, *ptrR[current+delta], *ptrR[current], load);
                }
        if (DoneSorting && (delta > 1))
            {
            DoneSorting = false;
            delta /= 2;
            }
        }
    return;
    }