利用选择排序实现数组去重(例)

先来看知识点:

选择排序是一组无序的数,先使用第一个和后面所有的进行比较,如果有那个小就交换位置放在前面,依次使用第二个和后面所有的进行比较...

可以用一个例子看一下怎么使用选择排序:

1、排序:var arr = [7,2,4,0,3,1,9]?

var arr = [7,2,4,0,3,1,9]

//我们可以说一下思路,在这里可以利用循环嵌套的规则:“外层执行一次,内层执行一轮”,我们肯定是会用到遍历的,这个规则上我们可以打印试试 i 和 j,发现规律:当i执行一次,j执行一轮,因此使用i和j依次进行比较是合理的。

//遍历

for(var i=0; i<arr.length-1; i++){

            // 问题:j每一次都会从头进行执行,那么i和j进行比较的时候会出现回头比较的情况,因此j=i+1

             //遍历

            for(var j=i+1; j<arr.length; j++){

                //判断

                if(arr[i]>arr[j]){

                    //交换

                    var temp

                    temp = arr[i]

                    arr[i] = arr[j]

                    arr[j] = temp

                }

            }

        }  

        console.log(arr)

2、选择排序封装的思路与我们的冒泡排序封装思路大差不差,大家可以试着封装一下。

3、练习:数组去重

var arr = ['a', 'a', 'a', 'b','a', 'c', 'b', 'c', 'f', 'g', 'f']

//遍历i

for(var i=0; i<arr.length-1; i++){

            //遍历j

            for(var j=i+1; j<arr.length; j++){

                //判断

                if(arr[i] == arr[j]){

                 arr.splice(j, 1)

 //j--的原因是因为会出现连续三个或者三个以上的字符,删除不掉

/* 当有多个连续的字符的时候,在删除当前字符的时候,后面的会进行补位操作(这个时候进行补位的元素和前面被删除的元素是一样的),由于前面已经比较过了,因此程序不会回过头再进行比较一次,所以产生了多个连续字符删不掉的问题 */

                    j--   

                }

            }

        }

        console.log(arr)

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值