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 }