From 7028cbe09c688437910a25623098762bf0fa592d Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Mon, 28 Mar 2016 22:28:34 +1000 Subject: Move Irrlicht to src/others. --- .../doc/html/heapsort_8h_source.html | 188 +++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 src/others/irrlicht-1.8.1/doc/html/heapsort_8h_source.html (limited to 'src/others/irrlicht-1.8.1/doc/html/heapsort_8h_source.html') diff --git a/src/others/irrlicht-1.8.1/doc/html/heapsort_8h_source.html b/src/others/irrlicht-1.8.1/doc/html/heapsort_8h_source.html new file mode 100644 index 0000000..72072a5 --- /dev/null +++ b/src/others/irrlicht-1.8.1/doc/html/heapsort_8h_source.html @@ -0,0 +1,188 @@ + + + + +Irrlicht 3D Engine: heapsort.h Source File + + + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + +
+
Irrlicht 3D Engine + +
+ +
+ + + + + + +
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
+
heapsort.h
+
+
+Go to the documentation of this file.
00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt
+00002 // This file is part of the "Irrlicht Engine".
+00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
+00004 
+00005 #ifndef __IRR_HEAPSORT_H_INCLUDED__
+00006 #define __IRR_HEAPSORT_H_INCLUDED__
+00007 
+00008 #include "irrTypes.h"
+00009 
+00010 namespace irr
+00011 {
+00012 namespace core
+00013 {
+00014 
+00016 template<class T>
+00017 inline void heapsink(T*array, s32 element, s32 max)
+00018 {
+00019     while ((element<<1) < max) // there is a left child
+00020     {
+00021         s32 j = (element<<1);
+00022 
+00023         if (j+1 < max && array[j] < array[j+1])
+00024             j = j+1; // take right child
+00025 
+00026         if (array[element] < array[j])
+00027         {
+00028             T t = array[j]; // swap elements
+00029             array[j] = array[element];
+00030             array[element] = t;
+00031             element = j;
+00032         }
+00033         else
+00034             return;
+00035     }
+00036 }
+00037 
+00038 
+00040 template<class T>
+00041 inline void heapsort(T* array_, s32 size)
+00042 {
+00043     // for heapsink we pretent this is not c++, where
+00044     // arrays start with index 0. So we decrease the array pointer,
+00045     // the maximum always +2 and the element always +1
+00046 
+00047     T* virtualArray = array_ - 1;
+00048     s32 virtualSize = size + 2;
+00049     s32 i;
+00050 
+00051     // build heap
+00052 
+00053     for (i=((size-1)/2); i>=0; --i)
+00054         heapsink(virtualArray, i+1, virtualSize-1);
+00055 
+00056     // sort array, leave out the last element (0)
+00057     for (i=size-1; i>0; --i)
+00058     {
+00059         T t = array_[0];
+00060         array_[0] = array_[i];
+00061         array_[i] = t;
+00062         heapsink(virtualArray, 1, i + 1);
+00063     }
+00064 }
+00065 
+00066 } // end namespace core
+00067 } // end namespace irr
+00068 
+00069 #endif
+00070 
+
+
+ + + + + -- cgit v1.1