这个冒泡排序代码有问题吗?

时间:2011-05-26 14:03:29

标签: actionscript-3 actionscript bubble-sort sorting

function algBubble(input:Array):Array{  
var changed:Boolean=true;

while(changed==true){

    changed=false;

    for(var i:int=0; i<input.length-1; i++){

        if(input[i]>input[i+1]){

            var temp:int=input[i];
            input[i]=input[i+1];
            input[i+1]=temp;

            changed==true;
        }
    }
}   
return input;
}

它似乎只运行一次数组,大部分未分类。

4 个答案:

答案 0 :(得分:4)

更改此行

changed==true;

changed=true;

答案 1 :(得分:1)

我建议你改变:

changed==true;

为:

changed = true;

第一个进行比较并将其抛弃,第二个 changed设置为true以表示已完成交换。

除了那个小问题,其他一切看起来都不错。

答案 2 :(得分:1)

冒泡排序是有史以来最慢的排序算法之一。

您可以使用内置的Array.sort函数对任何内容进行排序,有关此here的更多信息

您可以按照以下方式执行此操作:

        var test:Array = [5,3,6];

        private function sortArrays():void{
            test.sort(compareFunction);
            trace(test);//will output 3,5,6
        }

        function compareFunction(a:Number, b:Number):Number { 
            if (a<b) { 
                return -1; 
            } else if (a>b) { 
                return 1; 
            } else { 
                return 0; 
            } 
        } 

干杯

答案 3 :(得分:0)

你有一个错字: changed==true应为changed=true