JS数组的几种排序方式

数组


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>

 

Vue.js 提供了很多方便的指令来循环数组,以下是几种常见的方式: 1. 使用`v-for`指令 `v-for`指令是Vue.js中最常用的指令之一,它可以用来循环数组、对象或数字。对于数组的循环,可以这样写: ``` <div v-for="(item, index) in items" :key="index">{{ item }}</div> ``` 其中,`items`是要循环的数组,`item`是当前循环的元素,`index`是当前循环的索引。注意要为每个循环的元素设置一个唯一的`key`属性。 2. 使用`v-bind`指令 `v-bind`指令可以用来绑定DOM元素的属性,例如`class`、`style`等。对于数组的循环,可以这样写: ``` <div v-bind:class="{ active: item.isActive }" v-for="(item, index) in items" :key="index">{{ item }}</div> ``` 其中,`item.isActive`是一个布尔值,如果为`true`,则给当前循环的元素添加一个`active`类。 3. 使用`v-model`指令 `v-model`指令可以用来实现双向数据绑定,对于数组的循环,可以这样写: ``` <div v-for="(item, index) in items" :key="index"> <input type="text" v-model="items[index]"> </div> ``` 其中,`v-model`指令将输入框的值与数组中对应索引的元素进行双向绑定。 4. 使用`computed`属性 如果需要对数组进行一些计算,例如过滤、排序等,可以使用`computed`属性来处理。例如: ``` computed: { filteredItems: function() { return this.items.filter(function(item) { return item.isActive; }); } } ``` 其中,`filteredItems`是一个计算属性,它返回一个过滤后的数组。 以上是几种常见的循环数组方式,根据不同的需求选择合适的方式可以使代码更加简洁、易读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值