/**
* 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);