核心提示:冒泡排序,快速排序,二分算法(升序)冒泡排序:从arr[0]开始,每一组相邻的两个元素间进行比较,两层循环,第一次循环完成后会把最大的数放在最后,第二次循环完成后会把第二大的数放在倒数第二的位置,直到...
冒泡排序,快速排序,二分算法(升序)
冒泡排序:从arr[0]开始,每一组相邻的两个元素间进行比较,两层循环,第一次循环完成后会把最大的数放在最后,第二次循环完成后会把第二大的数放在倒数第二的位置,直到排序完成。
冒泡排序:从arr[0]开始,每一组相邻的两个元素间进行比较,两层循环,第一次循环完成后会把最大的数放在最后,第二次循环完成后会把第二大的数放在倒数第二的位置,直到排序完成。
function bubbingSort(arr){ var len=arr.length; for(var i=0;iarr[j+1]){ var tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } } return arr; }
快速排序:实际中最常用的一种排序算法,速度快,效率高。速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。
(1)递归方法:
var quickSort = function(arr){ //如果数组长度小于等于1无需判断直接返回即可 if(arr.length<=1){ return arr; } var midIndex=Math.floor(arr.length/2);//取基准点 var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1] var left=[];//存放比基准点小的数组 var right=[];//存放比基准点大的数组 for(var i=0;iright) return;后面的代码不再执行了。这个一定要理解。 };
(2)非递归:
待完善
二分算法:二分查找,也为折半查找。首先要找到一个中间值,通过与中间值比较,大的放又,小的放在左边。再在两边中寻找中间值,持续以上操作,直到找到所在位置为止。
(1)递归
function binarySearch(data,item,start,end){ var end=end || data.length-1; var start=start || 0; var m=Math.floor((start+end)/2); if(item==data[m]){ return m; }else if(item<data[m]){ return="" var="" arr="[34,12,5,123,2,745,32,4];" pre="">
(2)非递归
function binarySearch(data, item){ var h = data.length - 1, l = 0; while(l <= h){ var m = Math.floor((h + l) / 2); if(data[m] == item){ return m; } if(item > data[m]){ l = m + 1; }else{ h = m - 1; } } return false; } var arr=[34,12,5,123,2,745,32,4]; binarySearch(arr,5);
flex布局(display:flex 是CSS3中新的盒子模型) ddisplay的所有属性
语义化标签理解 什么是语义化标签,应该注意什么,有什么好处 代码规范的重要性 部分代码规范注意事项
对H5的理解?(定义,有哪些新增标签,了解多少) 什么是H5 H5所有标签 新增标签详解
部分标签属性的理解和应用 input