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;
}
它似乎只运行一次数组,大部分未分类。
答案 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