Cómo resolver la ordenación rápida utilizando un método no recursivo

Ahí está el siguiente código. Está en javascript.

función nonRecursiveQuickSort (unSortedArray) {
var tempStack = [unSortedArray];
var sortedArray = [];

while (tempStack.length) {
var tempVar = tempStack.pop ();
var currentLength = tempVar.length;

if (currentLength == 1) {
sortedArray.push (tempVar [0]);
continuar;
}

var pivotElement = tempVar [0];
var leftElement = [];
var rightElement = [];

for (var iter = 1; iter <currentLength; iter ++) {
if (tempVar [iter] <pivotElement) {
leftElement.push (tempVar [iter]);
} más {
rightElement.push (tempVar [iter]);
}
}

leftElement.push (pivotElement);

if (rightElement.length)
tempStack.push (rightElement);
if (leftElement.length)
tempStack.push (leftElement);
}

return sortedArray;
}

Crearía mi propia pila de punteros (si voy a trabajar con C) o de lo contrario crear una pila sería muy fácil si usara Python 😉