关于HarmonyOS的学习

day17

一、sort排序

1.可以进行升序和降序,如果数字超过两位,那么是按照位数挨个进行比较的,a-b是升序,b-a是降序;无论是前面的数字还是后面的数字都会根据比较交换数字的位置后,重新表示(表示的是下一位的,不是原来位置上的数字了)

2.参数,是一个函数,在这个作为参数的函数里面有两个参数 ​ => 参数1,表示的是前面的一个数字 ​ => 参数2,表示的是后面的一个数字

二、冒泡排序

1.一组无序的数,两两依次进行比较,如果那个大就和小的交互位置,把大的数排列在后面,直到比较完成

2.外层循环减1原因:四个数字比较三轮便可比出结果

内层循环减1的原因:每次和后面的数比较,给下标+1了,比较到最后,会发现下标已经超出了数组原有的下标,取出来的结果是undefined,没有必要和undefined比较。

外层控制的是轮数,内层控制的是数的比较,j表示下标

var arr = [5, 3, 7, 1] ​ for(var i=0;i<arr.length-1;i++){ ​ for( var j=0;j<arr.length-1-i;j++){ ​ if(arr[j]>arr[j+1]){ ​ var temp ​ temp = arr[j] ​ arr[j] = arr[j+1] ​ arr[j+1] = temp ​ } ​ } ​ } ​ console.log(arr)

3.冒牌排序的优化 问题:每一轮比较的时候,让它的循环次数减少 解决:让每次执行的时候减去i

三、选择排序

1.一组无序的数,先使用前面的数和后面所有的数依次比较,再使用第二个数和后面的所有的数依次比较,交换位置,大的放后面...直到比较完

2.i每次的值会发生变化,j的值每次也会发生变化,但都是从0开始的,而i不会

使用i和j依次比较,i作为前一个数的下标,j作为其他数的下标

var arr = [5, 3, 7, 12, 1] ​ for(var i=0; i<arr.length-1; i++){ ​ 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)

四、排序封装

// 选择排序封装 // 注意点:其实封装改变的就是参数,而参数是根据代码里面那些值是需要变化的来确定的 // arr表示的是数组 function selectSort(arr){ for(var i=0; i<arr.length-1; i++){ 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 } } } return arr }

五、数组去重

把数组里面重复的数据给删除掉,保证数组元素的唯一性

问题:当出现连续三个以上的相同的元素删除不掉,还会继续存在重复的数组元素 原因:当使用第一个和后面相同的字符进行比较时,把后面相同的字符给删除掉了,但是第三位的字符和第二位的字符是一样的,这个时候第三位的字符进行了补位操作,由于之前第二位字符的位置已经比较过了,因此不会回过头再次比较,由此产生了“漏网之鱼”。

var arr = ['a', 'a', 'a', 'b', 'b', 'f', 'c', 'f', 'f', 'c', 'd', 'd', 'f', 'c', 'd', 'a', 's'] ​ for(var i=0; i<arr.length-1;i++){ ​ for(var j=i+1; j<arr.length;j++){ ​ if(arr[i] == arr[j]){ ​ arr.splice(j,1) ​ j-- ​ } ​ } ​ } ​ console.log(arr)

六、堆和栈

1.存储器 运行内存 => 4g、8g、16g、32g、64g... => 当你打开某个软件、或者查看图片、打开文件的时候其实都是运行内存在起作用 硬盘 => 128g、256g、512g、1T、2T... => 按照的软件、视频、音频、文件、照片、文档等等都是存储在硬盘上

2.内存 指的是运行内存 内存分区: => 栈区,专门用来存储基本数据类型的 => 堆区,用来存储引用数据类型的值的 => 引用数据的地址是存在栈区,值是存储堆区

七、对象

1.对象是一个引用数据类型 对象是js里面一个大的范围,这个范围里面会存储很多分类,例如:字符串(string)对象、日期(Date)对象、数学(Math)对象等等

2.内置对象 => string => Date => Math => Array => Set => Map => ...

3.自定义对象 => 就是你自己定义的对象 对象其实是一种数据结构,这种结构更清晰,对象的结构里面可以放任意其他的数据类型

4.对象组成 => 属性,分为属性名和属性值。属性一般指的是静态(特征)的东西,例如:车品牌、车颜色、车型号... => 方法,分为方法名和值(一个函数)。方法指的是行为或者理解为动态的东西,例如:开车、打游戏、谈恋爱...

5.键值对 => key value形式 => 对象是由键值对组成的 => 把方法和属性名称之为键,把属性值和函数称之为值

6.创建方式 => new Object() 构造函数(你其实可以把它理解为一个模版) => {} 字面量

7.添加属性和方法 使用点的形式不能解析变量,使用起来更方便; 使用中括号的形式可以解析变量,灵活性更强; 在遍历对象的时候必须使用中括号形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值