前端常考算法

  • 冒泡排序
function maopao(arr) {
   for(let i =0; i<arr.length; i++) {
     for(let j=0; j<arr.length-i; j++){
       if(arr[j]>arr[j+1]){
         [arr[j],arr[j+1]] = [arr[j+1],arr[j]]
       }
     }
   }
  return arr
}
  • 快速排序
function quickSort(arr, start, end) {
    if (start > end) {
        return;
    }
    let i = start,
        j = end,
        pivot = arr[start]; //存放基準數
    while (i !== j) {
        // 從右邊開始,找第一個小於基準的位置
        while (arr[j] >= pivot && i < j) {
            j--;
        }
        // 從左邊開始,找第一個大於基準的位置
        while (arr[i] <= pivot && i < j) {
            i++
        }
        // 交換兩個數
        if (i < j) {
            let tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
        }
    }
    // 最後把基準數歸位
    arr[start] = arr[i];
    arr[i] = pivot;
    // 遞歸處理左邊
    quickSort(arr, start, i - 1);
    // 遞歸處理右邊
    quickSort(arr, i + 1, end);
}
var arr = [6, 1, 2, 7, 9, 3, 4, 5, 10, 8];
quickSort(arr, 0, arr.length - 1);
console.log(arr);
  • 判斷兩個變量是否相等
function diff(obj1,obj2){
            var o1 = obj1 instanceof Object;
            var o2 = obj2 instanceof Object;
            if(!o1 || !o2){/*  判斷不是對象  */
                return obj1 === obj2;
            }

            if(Object.keys(obj1).length !== Object.keys(obj2).length){
                return false;
            }

            for(var attr in obj1){
                var t1 = obj1[attr] instanceof Object;
                var t2 = obj2[attr] instanceof Object;
                if(t1 && t2){
                    //若是沒有return diff 就不會跳出函數,直接返回下面的true
                    return diff(obj1[attr],obj2[attr]);
                }else if(obj1[attr] !== obj2[attr]){
                    return false;
                }
            }
            return true;
        }
相關文章
相關標籤/搜索