我们所度过的每个平凡的日常,也许就是连续发生的奇迹。
1.自我介绍,说得有点少,下面应该再准备的多一点。
2.然后问了我不是本专业的,有没有学过数据结构这些。之后就问了算法题这些。
3.冒泡排序的时间复杂度为多少:O(n*n) 然后写一下冒泡排序的代码
var arr = [4, 3, 8, 9, 5, 2, 10, 0];
console.log('arr:' + arr);
init(arr);
console.log('Arr:' + arr);
function init(arr){
for(i=0;i<arr.length-1;i++){
for(j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
console.log('newArr:' + arr);
}
}
4.快排的时间复杂度为相比较传统做法用嵌套循环排序,时间复杂度由O(n^2)变为O(logn),当问题规模n变大的时候,就能体现快速排序算法的效率了。
参考链接:https://www.cnblogs.com/ybygb-geng/p/9355425.html
var arr1 =[2,3,1,4,6,8];
function quickArray(arr){
var left = [],right =[];
if(arr.length <= 1){
return arr;
}
var index = Math.floor(arr.length/2);
var p = arr.splice(index,1)[0];
for (var i=0;i<arr.length;i++){
if(arr[i] <= p){
left.push(arr[i]);
}else{right.push(arr[i]);
}
}
return quickArray(left).concat(p,quickArray(right));
};
console.log(quickArray(arr1));
5.快速排序的情况好坏分析:
快速排序在一趟排序中将数字分割成为独立的两部分,左边一部分小于轴值,右边一部分大于轴值,轴值的选择理论上可以选择数组中的任何一个数组,我们在这里考虑选择第一个数字。然后对两部分序列重复进行上述操作,快速排序可以用递归来完成
时间复杂度:最好情况O(n*logn)——Partition函数每次恰好能均分序列,其递归树的深度就为.log2n.+1(.x.表示不大于x的最大整数),即仅需递归log2n次; 最坏情况O(n^2),每次划分只能将序列分为一个元素与其他元素两部分,这时的快速排序退化为冒泡排序,如果用数画出来,得到的将会是一棵单斜树,也就是说所有所有的节点只有左(右)节点的树;平均时间复杂度O(n*logn)
6.快速排序稳定吗?算法稳定性
参考链接:https://blog.csdn.net/gaoxueyi551/article/details/89413936
https://www.jianshu.com/p/08a90b29caa6
6.斐波那契数列算法
function fb1(n){
if(n <= 2){
return 1;
}else{
return fb1(n-1) + fb1(n-2);
}
}
递归优化:
function fb2 (n , ac1 = 0 , ac2 = 1) {
if( n <= 1)
{return ac1};
else{
return fb2 (n - 1, ac2, ac1 + ac2);
}
}
参考链接:https://blog.csdn.net/qq_39300332/article/details/80000837
7.递归优化的方法
参考链接:https://blog.csdn.net/HEYUJIEBOY/article/details/76692870
递归会出现的问题:
参考问题:https://blog.csdn.net/qq_36748278/article/details/54707109
8.js实现算法:找出数组中和为给定值的两个元素
function same(arr, num)
{
for (var i =0 ;i<arr.length;i++)
{
for (var j = i+1;j<arr.length;j++)
{
if (arr[i]+arr[j]==num)
{
console.log('数组中两个元素和为'+num+'的两个数为:'+arr[i]+'和'+arr[j]);
break;
}
}
}
}
参考链接:https://blog.csdn.net/m0_37686205/article/details/90113817
9.node.js事件循环
参考链接:https://www.jianshu.com/p/9faada4cd977
10.promise理解
转:https://www.jianshu.com/p/1b63a13c2701
11.登陆过程的整个流程
用户名密码等通过浏览器给服务器发送请求,看是否匹配,如果匹配后。。。。。(有待研究)
转;https://blog.csdn.net/Good_Luck_Li/article/details/90402363
12.ajax请求的五个步骤
转:https://www.cnblogs.com/tfxz/p/12701681.html
13.ajax的状态