quickSort を 改善!?

ttp://hoppersource.dip.jp/wordpress/?p=46
constructor 部分でちょっと使いやすくしただけ。

package{
	public class QuiqSort{
		private var target:Array;
		private var sorttarget:Array;
		private var dataLimit:Number;
		private var sortArrayIndex:Array = new Array();

		public function QuiqSort(dataNum:uint ,limit:Number = 300){
			dataLimit = limit;
			target = new Array(dataNum);
			target.forEach(targetSet);
			sorttarget = target.concat();
			quickSort(0 ,dataNum - 1 ,sorttarget);
		}

		public function getSortArray():Array{
			return sorttarget;
		}

		public function getRandomArray():Array{
			return target;
		}

		public function getSortArrayIndex():Array{
			return sortArrayIndex;
		}

		private function targetSet(element:* ,index:int ,arr:Array):void{
			target[index] = Math.floor(Math.random() * dataLimit);
			sortArrayIndex[index] = index;
		}

		private function quickSort(bottom:Number ,top:Number ,data:Array):void{
			var upper:Number = top;
			var lower:Number = bottom;

			if(top <= bottom){
				return;
			}

			var div:Number = data[bottom];
			var temp:Number;

			while(lower < upper){
				while(lower <= upper && data[lower] <= div){
					lower += 1;
				}

				while(lower <= upper && div < data[upper]){
					upper -= 1;
				}

				if(lower < upper){
					temp = data[lower];
					data[lower] = data[upper];
					data[upper] = temp;

					for(var i:Number = 0;i < sortArrayIndex.length;i++){
						if(sortArrayIndex[i] == lower){
							sortArrayIndex[i] = upper;
						}
						else if(sortArrayIndex[i] == upper){
							sortArrayIndex[i] = lower;
						}
					}
				}
			}

			temp = data[bottom];
			data[bottom] = data[upper];
			data[upper] = temp;

			for(i = 0;i < sortArrayIndex.length;i++){
				if(sortArrayIndex[i] == bottom){
					sortArrayIndex[i] = upper;
				}
				else if(sortArrayIndex[i] == upper){
					sortArrayIndex[i] = bottom;
				}
			}

			quickSort(bottom ,upper - 1 ,data);
			quickSort(upper + 1 ,top ,data);
		}
	}
}

mimic28号でした。