Js冒泡排序和插入排序教学

冒泡排序:

实现原理

如果数组中有n个数,依次比较相邻的两个数,如果前者大于后者,就把两个数交换位置,小的数在前面,如果两个数进行比较,后者小于前者,两个数就不会交换位置。这样第一次冒泡排序就好了,而后面会依次进行排序,直到大的数在最后,前面的数是最小的。经过n-1(数组的length-1)轮后,就完成了所有数的排序。

图片演示:

 代码演示:

   //定义数组[9,4,3,2,1]
         var arr=[9,4,3,2,1];
        //遍历数组,次数就是数组的长度
        for(var i=1;i<arr.length;i++){
            for(var j=0;j<arr.length-1;j++){
                //利用if来判断大于,小于或等于,来判断是否进行位置交换
                if(arr[j]>arr[j+1] ){
            //定义一个新的空的值
                var temp=arr[j];
                //对前后的两个数进行交换
                arr[j]=arr[j+1];
                //将数字依次放入新的空的值里
                arr[j+1]=temp;
            }
            
            }
        }
//控制台输出
console.log(arr);
//输出结果:1,2,3,4,9

总结:

1、外层for循环控制循环次数

2、内层for循环进行两束交换,找出最大的数

3、if的作用进行前后两数的大小判断是否进行下一步操作

4、定义temp用于交换前后两数

插入排序

说明:

插入排序是冒泡排序的优化,是一种更加直观和简单的排序算法。

实现原理:

通过构建有序的数组存储,对末排序的数组元素,在已排序的数组中从最后一个元素向第一个元素遍历,找到相应的位置并插入。

图片演示:

 代码演示:

        var  arr=[10,8,100,31,,87,99,82,1];
        //先遍历无序数组的下标
        for(var i=1;i<arr.length;i++){
            //遍历并比较一个无序数组元素和所有有序数组元素
            for(var j=1;j>0;j--){
                if(arr[j-1]>arr[j]){
                    var temp=arr[j-1];
                        arr[j-1]=arr[j];
                            arr[j]=temp;
                        }
                    }    
                }
//输出结果[1,8,10,31,82,87,99,100]
console.log(arr);

 代码描述

1、外层循环的作用:遍历无序数组的下标。

2、内层循环的作用:遍历并比较一个无序数组元素和所有有序数组元素。

3、if的作用:进行前后两值的大小判断来进行下一步操作。

4、内部定义的temp作用:用来交换前后两数

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值