0

看了书上的冒泡排序的方法,自己下来写了写。<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="UTF-8">
<title>Title</title>

</head>
<body>
<script>

function Arraaylist() {
    var array=[];
    this.insert=function (item) {
        array.push(item);
    };
    this.toString=function () {
        return array.join();
    };
    this.bubblesort=function () {
        var length=array.length;
        for(var i=0;i<length;i++){
            for(var j=0;j<length-1;j++){
                if(array[j]>array[j+1]){ //如果大于前一个的值,赋值给第二个。//32154
                    swap(j,j+1)
                }
            }
        }
        var swap=function (index1,index2) {
            var aux=array[index1];
            array[index1]=array[index2];
            array[index2]=aux;//将一的值给二
        };
    };
}
function creatnum(size) {
    var array=new Arraaylist();
    for(var i=size;i>0;i--){
        array.insert(i);
    }
    return array;
}

var array=new creatnum(7);

array.bubblesort();
alert(array);

</script>
</body>
</html>
问题是array的7个数字是塞进去了,但是调用bubblesort函数。浏览器提示错误,swap is not function;调用insert函数都没问题;var array=new Arraaylist();写这个的是不应该都是继承下来的么?

1个回答

0

已采纳

swap 函数放在前面,函数表达式不会声明提升。

    this.bubblesort=function () {
        var swap=function (index1,index2) {
            var aux=array[index1];
            array[index1]=array[index2];
            array[index2]=aux;//将一的值给二
        };
        var length=array.length;
        for(var i=0;i<length;i++){
            for(var j=0;j<length-1;j++){
                if(array[j]>array[j+1]){ //如果大于前一个的值,赋值给第二个。//32154
                    swap(j,j+1)
                }
            }
        }

    };

撰写答案