Freaky Vector Sorting

by grapefrukt
...
@author Martin Jonasson (m@webbfarbror.se)
♥0 | Line 49 | Modified 2011-07-05 21:56:49 | MIT License
play

ActionScript3 source code

/**
 * Copyright grapefrukt ( http://wonderfl.net/user/grapefrukt )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/rK5r
 */

package  {
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	
	/**
	 * ...
	 * @author Martin Jonasson (m@webbfarbror.se)
	 */
	public class TestVectorSort extends Sprite{
		
		public function TestVectorSort() {
			var v:Vector.<Item> = new Vector.<Item>;
			var i:int = 0
			
			for (i = 0; i < 30; i++) {
				v.push(new Item(Math.random() * 5));
			}
			v.sort(_broken_sort);
			
			
			var t:TextField = new TextField;
			t.autoSize = TextFieldAutoSize.LEFT;
			t.defaultTextFormat = new TextFormat("Consolas", 12, 0x000000);
                        t.text = "broken sort:\n";
			addChild(t);
			
			for (i = 0; i < v.length; i++) {
				t.appendText(i + "\t" + v[i].value + "\n");
			}

                        v.sort(_working_sort);

                        t = new TextField;
                        t.x = 200;
			t.autoSize = TextFieldAutoSize.LEFT;
			t.defaultTextFormat = new TextFormat("Consolas", 12, 0x000000);
                        t.text = "working sort:\n";
			addChild(t);
			
			for (i = 0; i < v.length; i++) {
				t.appendText(i + "\t" + v[i].value + "\n");
			}
			
		}
		
		private function _broken_sort(x:Item, y:Item):Number {
			return x.value - y.value;
		}


                private function _working_sort(x:Item, y:Item):Number {
			if (x.value > y.value) return 1;
			if (x.value < y.value) return -1;
			return 0;
		}
		
	}

}

class Item {
	private var _value:Number = 0;
	public function Item(value:Number) {
		_value = value;
	}
	
	public function get value():Number { return _value };
}

Forked