核心提示:冒泡排序,快速排序,二分算法(升序)冒泡排序:从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


