Sorting Network Verify and Draw
Check Whether Comparator Networks Sort and Draw Them
Public Member Functions | Private Member Functions | List of all members
CBubbleSortMax Class Reference

Max-bubblesort. More...

#include <Bubblesort.h>

Inheritance diagram for CBubbleSortMax:
CSortingNetwork CRenderableComparatorNet CComparatorNetwork

Public Member Functions

 CBubbleSortMax (const UINT)
 Constructor. More...
 
const std::wstring GetName () const
 Get name. More...
 
- Public Member Functions inherited from CSortingNetwork
 ~CSortingNetwork ()
 Destructor. More...
 
bool Read (LPWSTR)
 Read from file. More...
 
bool sorts ()
 Does it sort? More...
 
const UINT GetUnused () const
 Get number of unused comparators. More...
 
- Public Member Functions inherited from CRenderableComparatorNet
 ~CRenderableComparatorNet ()
 Destructor. More...
 
void Draw (const eDrawStyle)
 Draw to a Gdiplus::Bitmap. More...
 
HRESULT ExportToPNG (LPWSTR)
 Export in PNG format. More...
 
HRESULT ExportToTex (LPWSTR)
 Export in TeX format. More...
 
HRESULT ExportToSVG (LPWSTR)
 Export in SVG format. More...
 
Gdiplus::Bitmap * GetBitmap ()
 Get bitmap pointer. More...
 
- Public Member Functions inherited from CComparatorNetwork
 ~CComparatorNetwork ()
 Destructor. More...
 
virtual bool Read (LPWSTR)
 Read from file. More...
 
void Prune (const UINT)
 Prune down number of inputs. More...
 
const UINT GetNumInputs () const
 Get number of inputs. More...
 
const UINT GetDepth () const
 Get depth. More...
 
const UINT GetSize () const
 Get size. More...
 
const bool FirstNormalForm () const
 Test for first normal form. More...
 

Private Member Functions

void CreateComparators ()
 Create comparators. More...
 

Additional Inherited Members

- Protected Member Functions inherited from CSortingNetwork
void initSortingTest ()
 Initialize the sorting test. More...
 
bool stillsorts (const int delta)
 Does it still sort when a bit is changed? More...
 
UINT flipinput (UINT j, const UINT firstlayer, const UINT lastlayer)
 Recompute network values when a bit is changed. More...
 
void initValues (const UINT firstlayer, const UINT lastlayer)
 Initialize the network values to the all zero input. More...
 
void initUsage ()
 Initialize usage array. More...
 
void CreateValueArray ()
 Make value array. More...
 
void CreateUsageArray ()
 Make usage array. More...
 
- Protected Member Functions inherited from CRenderableComparatorNet
Gdiplus::REAL ComputeBitmapHeight ()
 Compute bitmap height. More...
 
void DrawChannels (const float fLen)
 Draw channels. More...
 
void DrawComparator (const UINT, const UINT, const float, bool=false)
 Draw a comparator. More...
 
void DrawComparators ()
 Draw all comparators. More...
 
- Protected Member Functions inherited from CComparatorNetwork
void InsertComparator (UINT, UINT, UINT)
 Insert comparator. More...
 
void CreateMatchArray (UINT, UINT)
 Create match array. More...
 
void ComputeSize ()
 Compute size. More...
 
- Protected Attributes inherited from CSortingNetwork
CBinaryGrayCodem_pGrayCode = nullptr
 Gray code generator. More...
 
UINT ** m_nValue = nullptr
 Values at each level when sorting. More...
 
- Protected Attributes inherited from CRenderableComparatorNet
const Gdiplus::REAL m_fPenWidth = 2.0f
 Pen width in pixels. More...
 
const Gdiplus::REAL m_fXDelta = 24.0f
 Gap between channels in pixels. More...
 
const Gdiplus::REAL m_fYDelta = 16.0f
 Vertical comparator gap in pixels. More...
 
const Gdiplus::REAL m_fYDelta2 = 8.0f
 Extra vertical gap between layers in pixels. More...
 
const Gdiplus::REAL m_fDiameter = 8.0f
 Diameter of circles in pixels. More...
 
Gdiplus::Bitmap * m_pBitmap = nullptr
 Pointer to a bitmap image. More...
 
eDrawStyle m_eDrawStyle = eDrawStyle::Horizontal
 Drawing style. More...
 
Gdiplus::Graphics * m_pGraphics = nullptr
 Pointer to graphics object. More...
 
Gdiplus::Pen * m_pPen = nullptr
 Pointer to graphics pen. More...
 
Gdiplus::Pen * m_pRedPen = nullptr
 Pointer to graphics pen. More...
 
Gdiplus::SolidBrush * m_pBrush = nullptr
 Pointer to graphics brush. More...
 
Gdiplus::SolidBrush * m_pRedBrush = nullptr
 Pointer to graphics brush. More...
 
FILE * m_pOutput = nullptr
 File pointer. More...
 
eExport m_eExportType = eExport::Png
 Export type. More...
 
- Protected Attributes inherited from CComparatorNetwork
UINT ** m_nMatch = nullptr
 Matchings at each level. More...
 
bool ** m_bUsed = nullptr
 Whether comparators are used when sorting. More...
 
UINT m_nInputs = 0
 Number of inputs. More...
 
UINT m_nDepth = 0
 Depth. More...
 
UINT m_nSize = 0
 Size. More...
 
bool m_bSorts = false
 True if it sorts, false if it doesn't or unknown. More...
 

Detailed Description

Perform bubblesort from max to min. That is, first bubble the largest value to the last channel, then the second-largest value to the second last channel, etc., making as much use of parallelism as possible.

Definition at line 52 of file Bubblesort.h.

Constructor & Destructor Documentation

◆ CBubbleSortMax()

CBubbleSortMax::CBubbleSortMax ( const UINT  n)

Construct a max-bubblesort sorting network.

Parameters
nThe number of inputs.

Definition at line 35 of file Bubblesort.cpp.

Member Function Documentation

◆ CreateComparators()

void CBubbleSortMax::CreateComparators ( )
private

Create the comparators for max-bubblesort. Assumes that m_nInputs has been set to the number of inputs and that the matching array m_nMatch has been created and initialized.

Definition at line 51 of file Bubblesort.cpp.

◆ GetName()

const std::wstring CBubbleSortMax::GetName ( ) const

Construct a wide string name from the type of sorting network and the number of inputs.

Returns
A wide string name.

Definition at line 71 of file Bubblesort.cpp.