1.字符串出现最多的个数
function searchStr(str){
var max=0;//定义最大为0
var arr='';//定义一个空字符串
for(let i=0;i<str.length;i++){
var arr=str.split(str[i]);//将字符串转为数组
if(max<arr.length-1){
max=arr.length-1;
arr=str[i];
console.log(arr);
}
}
return '出现最多的是'+arr+'出现了'+max+'次'
}
var str='guanzhuwoba';
console.log(searchStr(str));
2.红绿灯
- 红绿灯问题,绿灯3秒,红灯2秒,黄灯1秒,每隔一秒打印一条记录,这样循环,在控制台打印
- 绿灯3
- 绿灯2
- 绿灯1
- 红灯2
- 红灯1
- 黄灯1
- 绿灯3
* function red(){
return new Promise(function(resolve,reject){
console.log('红灯');
setTimeout(function(){
resolve(green());
},2000)
})
}
function green(){
return new Promise(function(resolve,reject){
console.log('绿灯');
setTimeout(function(){
resolve(yellow());
},3000)
})
}
function yellow(){
return new Promise(function(resolve,reject){
console.log('黄灯');
setTimeout(function(){
resolve(red());
},1000)
})
}
red();
3.归并排序
function target(arr){
// 先去拆解
if(arr.length>1){
let midIndex=Math.floor(arr.length/2);
let leftArr=target(arr.slice(0,midIndex));
let rightArr=target(arr.slice(midIndex,arr.length));
arr=merger(leftArr,rightArr);
return arr;
}
return arr;
}
function merger(left,right){
let result=[];
// 合并 排序
let i=0;
let j=0;
while(i<left.length&&j<right.length){
left[i]>right[j]?result.push(right[j++]):result.push(left[i++]);
}
return result.concat(
i<left.length?left.slice(i):right.slice(j)
)
}
console.log(target([32,13,42,56,7,14,6,5]),'mmm');
4.快速排序
function quickSort(arr=[]){//初始值
let {length} = arr;
// 数组的只有一个情况,就不自调
if(length<=1){
return arr;
}
// 基准点
let povit = arr[0];
// 比基准点小的放left数组里
let left = [];
// 比基准点大的放right数组里
let right = [];
for(let i=1;i<length;i++){
if(povit<=arr[i]){
right.push(arr[i]);
}else{
left.push(arr[i]);
}
}
console.log(left,right);
// 自己调用自己
let l = quickSort(left);
let r = quickSort(right);
return l.concat(povit).concat(r);
}
let arr = quickSort([3,4,6,3,2,1])
console.log(arr)
5.冒泡排序
//冒泡排序:方法1
// 在数组原型上添加方法
Array.prototype.bubbleSort=function(){
let {length}=this;
for(let i=0;i<length;i++){
for(let j=0;j<length-i;j++){
if(this[j]>this[j+1]){
[this[j],this[j+1]]=[this[j+1],this[j]]
}
}
}
return this;
}
console.log([5,4,3,2,1,0].bubbleSort());
//冒泡排序:方法2
function bubbleSort(arr=[]){
let {length}=arr;
//外层循环
for(let i=1;i<length;i++){
//内层循环
for(let j=0;j<length-i;j++){
if(arr[j]>arr[j+1]){
[arr[j],arr[j+1]]=[arr[j+1],arr[j]]
}
}
}
return arr;
}
console.log(bubbleSort([5,4,3,2,1]))
6.插入排序
function insertSort(arr=[]){
let {length} = arr;
for(let i = 1;i<length;i++){
let j = i;
let temp = arr[i]; //拿出来的元素
while(j>0 && arr[j-1] > temp){
arr[j] = arr[j-1];
j--;
}
arr[j] = temp;
}
return arr
}
insertSort([6,5,4,3,2,1])
7.选择排序
function selectSort(arr=[]){
let {length} = arr;
let min;
for(let i = 0;i<length-1;i++){
min = i;
for(let j = i;j<length;j++){
if(arr[min] > arr[j]){
min = j;
}
}
if(min != i){
[arr[i],arr[min]] = [arr[min],arr[i]];
}
}
}
selectSort([10,23,7,76,13,4]);
//排完序:[4,7,10,13,23,76]
注:如有问题的,请留言,我会及时回复你的
……等等未完待续