JS数组的几种排序方式

来源:互联网 发布:java memcached 使用 编辑:程序博客网 时间:2024/06/06 02:43

数组


JS数组的查找方式有:顺序查找折半查找。

(1)查找

indexOf系统提供的

我们也可以实现自己的查找方法

a.顺序查找

<script>
    var a =[3,7,11,43,87,5,99,22,51,8];
    var num = Number(prompt("请输入要查找的值"));
    var index = -1;     //最初认为要找的数不在数组中
    for(var i in a){
        if(a[i] == num){
            index = i;
            break;
        }
    }
    alert(index);
    //作业:用lastIndexOf重新运行
</script>

这种查找方法最简单,但是查找次数与数据量成正比,效率不高。

b.折半查找(二分查找)

假设在一个已经有序的数组中,可以利用折半查找大幅度提高效率。

<script>
    var a =[3,5,7,8,11,22,43,51,87,99];
    var num = Number(prompt("请输入要查找的值"));
    var index = -1;     //最初认为要找的数不在数组中
    var start =0;
    var end = a.length-1;
    while(start <= end){
        var mid = Math.ceil((start+end)/2);//计算中间位数
        if(num == a[mid]){
            index = mid;
            break;
        }else{
            if(num > a[mid]){
                //在后半段中查找
                start = mid +1;
            }else{
                //在前半段查找
                end = mid -1;
            }
        }
    }
    alert(index);
</script>

折半查找的最坏查找次数与数据量的关系是对数关系,所以说它的查找效率是很高的,但是任何事情往往有他的两面性,它的高效率也是有高代价的,也就是要求有序

(2)排序(冒泡排序):

<script>
    var a =[3,7,11,43,87,5,99,22,51,8];
    for (var i =1; i<= a.length-1; i++){
        for (var j = 0; j <= a.length-i-1;j++) {
            if (a[j] > a[j + 1]) {
                var t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    alert(a.toString());
</script>

选择排序法

思路:

从第一个值开始,找到最小值与之兑换,然后在从第二个值开始找最小值与之兑换,知道所有的都排列好,打印输出

Sort排序只要告诉他比较规则就可以

(3)队列

先进先出(FIFO)frist in frist on,在头部出队(shift),在尾部入队(push)。

<script>
    var a =[];
    a.push(1);
    document.write(a.toString()+"<br/>");
    a.push(2);
    document.write(a.toString()+"<br/>");
    a.push(3);
    document.write(a.toString()+"<br/>");
    a.shift();
    document.write(a.toString()+"<br/>");
    a.shift();
    document.write(a.toString()+"<br/>");
    a.shift();
    document.write(a.toString()+"<br/>");
</script>

(4)堆栈

先进后出(FILO),在尾部进栈(push),也在尾部出栈(pop)。

<script>
    var a =[];
    a.push(1);
    document.write(a.toString()+"<br/>");
    a.push(2);
    document.write(a.toString()+"<br/>");
    a.push(3);
    document.write(a.toString()+"<br/>");
    a.pop();
    document.write(a.toString()+"<br/>");
    a.pop();
    document.write(a.toString()+"<br/>");
    a.pop();
    document.write(a.toString()+"<br/>");
</script>

 

原创粉丝点击