如何解决气泡排序代码有什么问题吗?
|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;
}
它似乎只遍历数组一次,几乎没有排序。
解决方法
我建议您更改:
changed==true;
至:
changed = true;
第一个进行比较并将其丢弃,第二个实际上将changed
设置为true
表示交换已完成。
除了这个小问题,其他所有东西看起来都很好。
,更改此行
changed==true;
至
changed=true;
,冒泡排序是有史以来最慢的排序算法之一。
您可以使用内置的Array.sort函数对任何内容进行排序,有关更多信息,请参见此处
您可以按照以下步骤进行操作:
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;
}
}
干杯
,您有错字:
changed==true
应该是changed=true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。