JavaScript的简单算法练习

/**
 * 1.打印矩阵
 */
function getMatrix(num){
    for(let i = 0; i < num; i++){
        let str = "";
        for(let j = 0; j < num; j++){
            str += "* "
        }
        console.log(str);
    }
}

 getMatrix(3);
/**
 * 2.乘法表
 */
function multiplicaiton(n){
    for(let i = 1; i <= n; i++){
        let str = "";
        for(let j = 1; j <= i; j++){
            str += `${i}*${j}=${i*j}  `;
        }
        console.log(str);
    }
}

 multiplicaiton(9);
/**
 * 3.打印费氏级数
 */

function fibonacci(n) {

    if(n < 0){
        return 0;
    }
    if(n == 0){
        return 0;
    }else if(n == 1){
        return 1;
    }else{
        return arguments.callee(n-1) + arguments.callee(n-2);
    }
}

 console.log(fibonacci(8));
/**
 *  4.二分查找
 */
function binarySearch(m,data) {
    let position = -1;
    let start = 0, end = data.length - 1;
    let mid = 0;
    while(start <= end) {
        mid = Math.floor((start + end) / 2);
        if(m > data[mid]) {
            start = mid + 1;
        }else if(m < data[mid]){
            end = mid - 1;
        }else {
            position = mid;
            break;
        }
    }
    return position;
}

let ms = [1,2,6,8,10];
console.log(binarySearch(1, ms));
console.log(binarySearch(6, ms));
console.log(binarySearch(10, ms));
/**
 * 5.冒泡排序
 */
function bubbleSort(arr) {
    let temp = 0;
    let flag = true;
    for(let i = 0; i < arr.length - 1 && flag; i++) { //若flag为true则退出循环
        flag = false;
        for (let j = 0; j < arr.length - 1 - i; j++) {
            if(arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                flag = true;
            }
        }
    }
}
let array = [3,4,1,8,5,9];
bubbleSort(array);
console.log(array);
/**
 * 6.选择排序
 */
function selectSort(arr) {
    let minIndex,temp = 0;
    for(let i = 0; i < arr.length - 1; i++) {
        minIndex = i;  //将当前下标定义为最小值下标
        for (let j = i + 1; j < arr.length; j++) {
            if(arr[i] > arr[j]) {
                //如果有小于当前最小值的关键值,将此关键值的下标赋值给min
                minIndex = j;
            }
        }
        if(i != minIndex) {
            ////若min不等于i,说明找到最小值,交换
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }

}
let array2 = [3,4,1,8,5,9];
selectSort(array2);
console.log(array2);
/**
 * 7.使用reduce计算二维数组中全部数值的和
 * 方法一:全部使用reduce
 */
let arr2 = [[1,2,3],[4,5,6],[7,8,9,10]];
let result = 0;
arr2.reduce(function(prev,cur){
    result += [prev != undefined ? prev.reduce((prev,cur) => prev + cur) : 0,cur != undefined ? cur.reduce((prev,cur) => prev + cur) : 0].reduce((prev,cur) => prev + cur);
});
console.log(result);
/**
 * 7.使用reduce计算二维数组中全部数值的和
 * 方法二:使用map
 */
let arr2 = [[1,2,3],[4,5,6],[7,8,9,10]];
let result = arr2.map((item)=> item.reduce((prev,cur) => prev + cur)).reduce((prev,cur) => prev + cur);
console.log(result);

猜你喜欢

转载自blog.csdn.net/cckevincyh/article/details/81123777