简单的冒泡的排序算法(AS3)

 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 }

posted on 2012-05-17 23:19  沙漠之泉  阅读(337)  评论(0编辑  收藏  举报

导航