针对昨天的题目,今天经过搜寻 得到了解释。
a.x=a={n:2},这和js中赋值顺序相关,例如let c = {},
c.h=1,此时的执行顺序为先执行c.h,此时c指向的地址里面包含h:undefined,右边的1最后的返回值为1, 所以c.h=1。
题中的意思就是先算a.x,此时值为undefined,再执行 a={n:2},这个返回值是{n:2},此时a已经指向了新的地址,而b还是指向a原来指向的地址,所以,a.x是undefined,b.x为{n:2}。
冒泡排序:就是进行n次循环,将第一个数和第二个数进行比较,若第一个大于第二个,则更换位置。
选择排序:就是将第一个数当成最小的值min,将其和后面的值进行比较,若min值比后面的大,则将min置为当前的最小值,并将原最小值和当前值交换位置。
插入排序:如下图解释
快速排序:选一个中心节点p,做指针left,右指针right,若left不小于p,left指针向右移,右指针right不大于p,向左移,此时左右指针的值互换位置,直到left大于right 。再将左边和右边各找中心节点,并各自做上述操作。
归并排序:取中间节点,并将两边数组分别做分解,直到每一项的长度为1,在进行合并。
对于这几道排序题,写完之后感觉还行,没有一开始刚写的时候难。