快速排序
function quickSort(arr){
if(arr.length<=1){
return arr;
}
var midindex=Math.floor(arr.length/2);
var midvalue=arr.splice(midindex,1)[0];//取出中間項
var arrLeft=[];
var arrRight=[];
for(var i=0;i<arr.length;i++){
var item=arr[i];
item<midvalue? arrLeft.push(item):arrRight.push(item);
}
return quickSort(arrLeft).concat(midvalue,quickSort(arrRight))
}
二分查找
function find(arr,key){
var low=0;
var high=arr.length-1;
while(high>=low){
var mid=parseInt((low+high)/2);
if(arr[mid]===key){
return arr[mid];
}else if(arr[mid]>key){
high=mid-1;
}else if(arr[mid]<key){
low=mid+1
}else{
return -1;
}
}
}
冒泡排序
function bubble(arr){
var temp-0;
for(var i=0;i<arr.length-1;i++){
for(var 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;
}
}
}
return arr;
}
數組去重
var arr=[1,2,3,3,4]
var arr1=[...new Set(arr)]
function unique(arr){
var arr1=[];
for(var i=0;i<arr.length;i++){
var item=arr[i];
if(arr1.indexOf(item)===-1){
arr1.push(item)
}
}
return arr1;
}
打印數組重複的元素
function repeat(arr){
var arr1=[];
arr.sort();
for(var i=0;i<arr.length;i++){
if(arr1.indexOf(arr[i])===-1&&arr[i]===arr[i+1]){
arr1.push(arr[i])
}
return arr1;
}
}
正則替換
var str='abc';
str.replace(/a/g,'b');//bbc
統計字符串的次數
function countStr(str){
var arr=str.split('');
var obj={};
for(var i=0;i<arr.length;i++){
var item=arr[i];
if(obj[item]){
obj[item]++;
}else{
obj[item]=1;
}
}
return obj;
}
統計字符串次數出現最多的字符
function maxCount(str){
var arr=str.split('');
var max=0;
var maxEle=null;
var param={};
for(var i=0;i<arr.length;i++){
var item=arr[i];
param[item]===undefined? param[item]=1:(param[item]++);
if(param[item]>max){
max=param[item];
maxEle=item;
}
}
return '最多的元素'+maxEle+'次數是'+max;
}
給定url將參數轉化爲對象
function getParam(url){
var param={};
var arr=url.split('?')[1];//獲取後面的參數
var arr1=arr.split('&');//id=1, name=zhang
for(var i=0;i<arr1.length;i++){
var item=arr1[i].split('=');//id,1,name,zhang
param[item[0]]=item[1];//若是取參數if(item[0]===key){return item[1]}
}
return param;
}
數組扁平化
var arr=[1,2,3,[4,5]];
arr.flat(infinity);
arr.toString().split(',').map((item)=>{
return Number(item)
})
隨機排序
function random(arr){
arr.sort(function(a,b){
return Math.random()-0.5;
})
}
字符串的倒敘
str.split('').reverse().join();
先中後序遍歷二叉樹
function Node (data, left, right) {
this.data = data;
this.left = left;
this.right = right;
this.show = function () {
return this.data;
};
}
function BST () {
this.root = null;
this.insert = function (data) {
var node = new Node(data, null, null);
if (this.root === null) {
this.root = node;
} else {
var current = this.root;
var parent;
while (true) {
parent = current;
if (data < current.data) {
current = current.left;
if (current === null) {
parent.left = node;
break;
}
} else {
current = current.right;
if(current === null) {
parent.right = node;
break;
}
}
}
}
};
function preorder(node){
if(!node){
return;
}
var left=node.left;
var right=node.right;
console.log(node.val);//中
left&&preorder(left);//左
right&&preorder(right);//右
}
//中序
function midorder(node){
if(!node){
return;
}
var left=node.left;
var right=node.right;
left&&preorder(left);//左
console.log(node.val);//中
right&&preorder(right);//右
}
//後序
function postorder(node){
if(!node){
return;
}
var left=node.left;
var right=node.right;
left&&preorder(left);//左
right&&preorder(right);//右
console.log(node.val);//中
}
層次遍歷二叉樹
function level(root){
if(!root){
return;
}
var queue=[];
var result=[];
queue.push(root);
while(queue.length>0){
var node=queue.shift();
result.push(node.val);
if(node.left){
queue.push(node.left);
}
if(node.right){
queue.push(node.right)
}
}
return result;
}
翻轉鏈表
var obj={val:1,next:{val:2,next:{val:3,next:null}}}
function reverse(head){
if(head===undefined||head.next===undefined){
return;
}
var p=head;
var q=head.next;
head.next=undifined;
while(q){
var r=q.next;
q.next=p;
p=q;
q=r;
}
return p;
}
設計者模式:工廠模式
function Animal(options){
var obj=new Object();
obj.name=options.name;
obj.getInfo=function(){
return obj.name;
}
return obj;
}
var cat=Animal({name:'leo'})
console.log(cat.getInfo())
睡眠函數
function sleep(time){
return new Promise((resolve,reject)=>{
setTimeout(()=>{resolve('over')},time)
})
}
async function run(time){
let result=await sleep(time)
}
run(3000)
補充中。。。