前端常见算法(js)

版权声明:转载请注明元仙僧 https://blog.csdn.net/weixin_42567389/article/details/88130456

不管是在实际项目中还是在面试的时候我们大都会碰到算法问题,比如排序啊,比较大小啊之类的这些最基本的算法。我总结了一些,以后在碰到在慢慢补充。

1.排序问题
1.1冒泡排序
冒泡排序算法就是依次比较大小,小的的大的进行位置上的交换。

function bubbleSort(arr) {  
    for(let i = 0,l=arr.length;i<l-1;i++) {
        for(let j = i+1;j<l;j++) { 
          if(arr[i]>arr[j]) {
                let tem = arr[i];
                arr[i] = arr[j];
                arr[j] = tem;
            }
        }
    }
    return arr;
}
module.exports = bubbleSort;

1.2快速排序

//快速排序
function quickSort(arr,l,r){
    if(l < r){
        var i = l, j = r, x = arr[i];
        while(i<j){
            while(i<j && arr[j]>x)
                j--;
            
            if(i<j)
                //这里用i++,被换过来的必然比x小,赋值后直接让i自加,不用再比较,可以提高效率
                arr[i++] = arr[j];
            
            while(i<j && arr[i]<x)
                i++;
            
            if(i<j)
                //这里用j--,被换过来的必然比x大,赋值后直接让j自减,不用再比较,可以提高效率
                arr[j--] = arr[i];
        }
        arr[i] = x;
        
        quickSort(arr, l, i-1);
        quickSort(arr, i+1, r);
    }
}

1.3二路归并

将两个按值有序序列合并成一个按值有序序列,则称之为二路归并排序


function marge(left,right){
	var result=[];
	il=0;
	ir=0;
	while(il<left.length && ir<right.length){
		if(left[il]<right[ir]){
			result.push(left[il++]);
		}else{
			result.push(right[ir++]);
		}
	}
	while(left[il]){
		result.push(left[il++]);
	}
	while(right[ir]){
		result.push(right[ir++]);
	}
	return result;
}

猜你喜欢

转载自blog.csdn.net/weixin_42567389/article/details/88130456
今日推荐