1 package 2 { 3 /** 4 * 冒泡排序算法 5 * @author ANT 6 * 对一个数组进行有小到大的冒泡排序 7 */ 8 public class BubbleSort 9 { 10 // public var arr:Array=[1,0,3,10,8,4]; 11 public var arr:Array; 12 public function BubbleSort() 13 { 14 arr=new Array(); 15 for(var i:int=1;i<=10;i++){ 16 arr.push(Math.random()*i); 17 } 18 // sort1(arr); 19 // this.sort2(arr); 20 this.sort3(arr); 21 } 22 /** 23 * 简单的类似冒泡的排序算法,但不是真正的冒泡排序算法 24 */ 25 private function sort1(arr:Array):void{ 26 var temp:*; 27 for(var i:int=0;i<arr.length;i++){ 28 for(var j:int=i+1;j<arr.length;j++){ 29 if(arr[i]>arr[j]){ 30 temp=arr[i]; 31 arr[i]=arr[j]; 32 arr[j]=temp; 33 } 34 } 35 } 36 } 37 /** 38 * 正宗的冒泡排序算法,排序的过程就像水中的气泡慢慢浮到水上面 39 * 当处理的数据量比较大的时候,两种算法还是有些差距的,sort2效率更高些 40 */ 41 private function sort2(arr:Array):void{ 42 var temp:*; 43 for(var i:int=0;i<arr.length;i++){ 44 for(var j:int=arr.length-2;j>=i;j--){ 45 if(arr[j]>arr[j+1]){ 46 temp=arr[j]; 47 arr[j]=arr[j+1]; 48 arr[j+1]=temp; 49 } 50 } 51 } 52 } 53 /** 54 * 优化后的冒泡排序算法 55 * 可以避免有序的情况下的无意义循环判断 56 */ 57 private function sort3(arr:Array):void{ 58 var temp:*; 59 var flag:Boolean=true; 60 for(var i:int=0;i<arr.length && flag;i++){ 61 flag=false; 62 for(var j:int=arr.length-2;j>=i;j--){ 63 if(arr[j]>arr[j+1]){ 64 flag=true; 65 temp=arr[j]; 66 arr[j]=arr[j+1]; 67 arr[j+1]=temp; 68 } 69 } 70 } 71 } 72 } 73 }